オブジェクト BaseObject と DerivedObject があります。次に、BaseObject に BaseContainer を与え、DerivedObject に DerivedContainer を与えます。
(DerivedObject : BaseObject、DerivedContainer : BaseContainer)
たとえば、次のnewキーワードを使用します。
ベースオブジェクト:
public BaseContainer コンテナ {get; 設定;}
派生オブジェクト:
public new DerivedContainer Container
{
get { return (DerivedContainer)base.Container; }
set { base.Container = value;
//Some extra things that MUST be called
}
}
virtualoverride戻り値の型を変更できないため、機能しません(失敗get;)。
の余分なコード(コメント部分)を呼び出していないため、new私が行うと機能しません。((BaseObject)myDerivedObject).Container = somethingDerivedObject.Container__set
プロパティのみを作成しget、 を使用newし、仮想セッター メソッドを追加できることはわかっています (戻り値の型はいずれにせよ void であるため、オーバーライドできます) が、これを回避する方法があるかどうか疑問に思っていました。