假设我在抽象类 AbstractClass 中有这样的属性:
protected MyClass MyProperty { get; set; }
这个属性被用于AbstractClass 中的许多(虚拟)方法中。在 AbstractClass 的子类中,我希望 MyProperty 成为 MyClass 的子类,这是可能的还是我必须强制转换它?
MyProperty = new SubclassOfMyClass();
((SubclassOfMyClass)MyProperty).Method();
看起来不太好...我尝试使用“new”关键字来隐藏 MyProperty,如下所示:
protected new SubclassOfMyClass MyProperty { get; set; }
但这并没有像我想象的那样成功,因为它似乎创建了第二个 MyProperty,并导致 AbstractClass 中的那个始终为空。
所以我想出了一些看起来有点像黑客的东西:
protected new SubclassOfMyClass MyProperty
{
get { return base.MyProperty as SubclassOfMyClass; }
set { base.MyProperty = value; }
}
有一个更好的方法吗?