我有对象 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,所以我可以覆盖它),但我想知道是否有任何解决方法。