現在抽象基本クラスの複数の派生クラスを設定できるアーキテクチャを設定しています。これらのクラスは、メソッドの実際のロジックを実装し、プロパティに値を割り当てます。派生抽象クラスを使用してモデルで使用される異なるロジックを定義する
プロパティに応じて、尊重するクラスの特定のロジックを実装するモデルがあります。
public abstract class AbstractLogic
{
protected String Prop1 { get; set; }
public abstract String Method1();
}
public class ActualLogic : AbstractLogic
{
public ActualLogic()
{
Prop1 = "Test";
}
public override string Method1()
{
throw new NotImplementedException();
}
}
public class Model
{
public string LogicType { get; set; }
private AbstractLogic Logic { get; set; } //I need to have something like this to use the logic inside of the model
}
私はどこかModel.logic.Method1()
を呼び出す例えば、一般的な方法でクラスを使用すると、それは、このアーキテクチャで
私の問題は、私はModel
をロードするときということですActualLogic
クラスからロジックを引く必要がありますLogic
プロパティは常にnull
なので、それを扱うのは非常に難しく、一貫性がないと感じます。
私は本当に良い解決策の周りに私の頭を包むことができないので、多分誰かが私を助けることができます。たぶんインターフェイスが良いでしょうか?または汎用クラスですか?私は両方を試みましたが、より良い結果を得ることはできませんでした。
ありがとうございます。
編集
は答えに私自身の答えを移動しました。
ここでジェネリック医薬品は必要ないようにアクセスすることができます。あなたが必要とするのは、使用する前に 'Logic'プロパティをインスタンス化することです。 –
モデルにコンストラクタを追加して初期化します。 'public Model(){Logic = new ActualLogic();} } ' –
ActualLogicのインスタンスが作成されていません。 Logic = new ActualLogic();モデル – MwBakker