假设我有以下代码:
class Parent
{
static string MyField = "ParentField";
public virtual string DoSomething()
{
return MyField;
}
}
class Child : Parent
{
static new string MyField = "ChildField";
}
现在我希望能够执行以下两项操作:
Console.WriteLine(Parent.MyField);
Console.WriteLine(Child.MyField);
这些按预期工作,但我也想这样做:
Child c = new Child();
Console.WriteLine(c.DoSomething());
由于没有为 Child 类定义 DoSomething() ,因此返回的是 Parent 的 MyField ,但我想要的是 Child 的 MyField 。
所以我的问题是:有什么办法可以做到这一点吗?
注意:重写 Child 类中的方法是一种选择,但由于我将有很多从 Parent 继承的 Child 类,并且该方法应该在所有子类中执行相同的操作,因此更改此方法中的某些内容会带来很多影响麻烦。
如果您发现自己需要该语言不支持的构造,在这种情况下static virtual
各位,这是一种气味,表明您的设计可能有缺陷。
不要向我们展示解决方案,而是向我们展示您试图用该解决方案解决的问题。我的猜测是,有一种完全不同的设计可以消除这种奇怪的情况。
换句话说:您收到的答案不是您想要的答案,因为您提出的问题实际上并不是您应该问的问题。我想不出在任何情况下所提出的设计都可以提供其他更传统的设计所没有的好处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)