抽象クラス AbstractClass に次のようなプロパティがあるとします。
protected MyClass MyProperty { get; set; }
このプロパティは、AbstractClass の多くの (仮想) メソッドで使用されます。AbstractClass のサブクラスで、MyProperty を MyClass のサブクラスにしたいのですが、これは可能ですか、それともキャストする必要がありますか?
MyProperty = new SubclassOfMyClass();
((SubclassOfMyClass)MyProperty).Method();
見栄えがよくありません...「new」キーワードを使用して、次のように MyProperty を非表示にしようとしました。
protected new SubclassOfMyClass MyProperty { get; set; }
しかし、2 番目の MyProperty を作成するように見え、AbstractClass のものが常に null になるため、これは思ったほどうまくいきませんでした。
だから私はちょっとハックのように見えるかもしれない何かを思いついた:
protected new SubclassOfMyClass MyProperty
{
get { return base.MyProperty as SubclassOfMyClass; }
set { base.MyProperty = value; }
}
これを行うより良い方法はありますか?