我有对象 BaseObject 和 DerivedObject。然后我想给BaseObject一个BaseContainer,给DerivedObject一个DerivedContainer。
(DerivedObject:BaseObject,DerivedContainer:BaseContainer)
例如,使用new关键字:
基础对象:
公共 BaseContainer 容器 {get; 放;}
派生对象:
public new DerivedContainer Container
{
get { return (DerivedContainer)base.Container; }
set { base.Container = value;
//Some extra things that MUST be called
}
}
virtual并且override不起作用,因为您无法更改返回类型(get;失败)。
new如果我这样做不起作用((BaseObject)myDerivedObject).Container = something,因为它没有在DerivedObject.Container__set.
我知道我可以只设置属性get,使用new,并添加一个虚拟设置方法(返回类型无论如何都是 void,所以我可以覆盖它),但我想知道是否有任何解决方法。