0
我有對象BaseObject和DerivedObject。 然後我想給BaseObject一個BaseContainer, 並給DerivedObject一個DerivedContainer。並行繼承
(DerivedObject:BaseObject,DerivedContainer:BaseContainer)
例如,使用關鍵字new
:
BaseObject:
公共BaseContainer集裝箱{得到;設置;}
DerivedObject:
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
,並添加一個虛擬setter方法(返回類型無效,所以我可以覆蓋它),但我想知道是否有任何解決方法。