いくつかの機能を共有する2つのコンソールアプリ、QueryとUpdateがあります。2つのクラスを共通の基本クラスから継承させたかったのですが、問題は、コンソールアプリの場合、static Main
関数が必要なことです。私が現在持っているのは次のとおりです。
namespace Utils
{
public class ConsoleBase
{
protected const int ERROR_EXIT_CODE = 1;
protected static void printWarning(string msg) {...}
public ConsoleBase(IEnumerable<string> args) { ... }
...
namespace Update
{
class Update : ConsoleBase
{
private static ConsoleBase _consoleBase;
public static void Main(string[] args) { ... }
...
namespace Query
{
class Query : ConsoleBase
{
private static ConsoleBase _consoleBase;
public static void Main(string[] args) { ... }
...
継承するだけでなく、各派生クラス内ConsoleBase
の変数としてインスタンスを持っていることは、私にとって設計上の問題のようです。static
私がこれをしている理由は次のとおりです:
- 派生クラスの他のメソッドにアクセスできるメソッドを定義することができます
protected static
。ConsoleBase
static
- コマンドライン引数をのコンストラクターに渡し、一般的な処理を実行してから、のインスタンスのプロパティとメソッドを
ConsoleBase
介して派生クラスの引数に再度アクセスできます。public
ConsoleBase
ConsoleBase
したがって、派生クラスでは、インスタンスのメソッド/プロパティへの呼び出しが混在しています。
_consoleBase.UseDebugMode()
継承された静的メソッドを呼び出し、で定義されている継承された定数にアクセスするだけでなくConsoleBase
、たとえば
printWarning(CONST_MSG_IN_BASE_CLASS);
どうにかしてこれをクリーンアップできますか?クラスから継承するだけでなく、その基本クラスのインスタンスを保持して作業するのは悪いことですか?