【发布时间】:2011-12-26 02:51:25
【问题描述】:
首先,我对标题感到抱歉,我不知道如何准确描述我的问题。希望通过代码能更好的解释。
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 并使用它而不是模型。
还有其他合适的方法吗? 谢谢!
【问题讨论】:
标签: c# refactoring