如果我有两个班,一个从其他继承和我用两个相同的方法/属性的名字,我怎么能作出这样的方法,无论当前对象是否已调用子类回到它的基础类。继承和压倒一切的方法/属性
例如(省略多余的部分):
public class MyBase {
public int GetNumber() {
return 1;
}
}
public class MyDerived : MyBase {
public new int GetNumber() {
return 20;
}
}
MyDervied someVar = new MyDerived();
int derivedVar = someVar.GetNumber(); // 20
MyBase baseVar = (MyBase)someVar;
int baseVar = baseVar.GetNumber(); // 1
我的直觉是使用替代而不是新的派生类,但我得到一个“没有成员发现重写”。
也许我应该发布一个具体的例子。我试图在WPF和ASP.NET中使用相同的基类。 WPF使用INotifyPropertyChanged,所以我实际上试图将基表的返回类型从列表更改为ObservableCollection 。最初我尝试在基类中使用IList,但运气不佳。 –
Echilon
2009-10-19 07:10:10
您可能只想在使用它的WPF代码中转换数据,而不是更改该方法返回的类型。如果保持返回类型为List,则只需将返回的值传递给ObservableCollection的构造函数即可。你可能想问一个更多细节的新问题,以获得更具体的建议。 –
dahlbyk
2009-10-19 07:44:26
谢谢。我需要ObservableCollection的原因是由于控件上的绑定,它需要更改通知。 – Echilon 2009-10-20 10:09:16