まずタイトルを残念に思うが、私は自分の問題を正確に記述する方法を知らない。私はそれがコードを通してよりよく説明されることを願っています。マイファクタをリファクタリングする:派生クラスでキャストすることを避ける
public abstract class AB {
public MyModel Model;
}
public class A : AB {
public A() {
Model = new MyModelA();
}
public void AMethod() {
var model = (MyModelA) model; // I have to do this all place
}
public void AnotherMethod() {
var model = (MyModelA) model; // same here
model.NewInt = 123;
}
}
public abstract class MyModel {
}
public class MyModelA : MyModel {
// new properties
public int NewInt {get;set;}
}
派生クラスから新しいプロパティを使用するために、私はキャストをしなければならないが、私はすべての場所の上にそれを同じ時間を使用する必要がある場合、それは醜いです、コードを見てみましょう。
私が思う方法は、別のプロパティ:public MyModelA _tmp
を宣言してから、それをコンストラクタ_tmp = (MyModelA) Model
にキャストし、Modelの代わりに使用します。
他にもこれを行う方法はありますか? ありがとう!
抽象クラスには 'protected'コンストラクタが必要です。 – bobbymcr
あなたは正しいです。私はそれを忘れてしまった。一定。 – SLaks
これは、TModelがAServiceに渡されたという事実に対処するために、どのように役立ちますか? – Nicolas78