lga*_*aud 5 c# polymorphism inheritance
我在"新"有意义时遇到的示例涉及维护情况,其中子类继承自库中的基类,并且该库的新版本添加了一个与已经存在的方法同名的方法.在子类中实现.(参见:脆基类)
我想知道的是,是否存在使用"新"是一个很好的设计选择(而不是维护中可能需要的东西)的情况.使用override无法完成的一件事是更改方法/属性的返回类型,同时保持名称相同,但我怀疑它是否是一个好的设计选择.
public class FruitBasket {
public int Weight { get; set;}
public List<Fruit> Fruits {get; set;}
}
public class AppleBasket : FruitBasket {
public new List<Apple> Fruits {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我知道的一种情况是,如果您要将数据绑定到从另一个接口继承的接口,并且想要绑定到基接口中的成员,则必须在 .Net WinForms 中使用 new。
例如,如果您有
public interface IOne
{
int ID {get;set;}
string Code {get;set;}
}
public interface ITwo : IOne
{
DateTime CreatedDate {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
并且您将控件数据绑定到 ITwo 对象,那么您将无法看到 ID 或代码属性,除非将它们添加到 ITwo 界面。当然你不必使用new,但推荐使用。
除此之外,我只在维护模式下使用过它,即一旦应用程序发布并且新的要求需要进行这样的更改。
哈,迪安。