次のようなクラス階層(.Net 3.5)があります。
Parent
- Child1
- Child2
- Child3
次のような基本クラスがあります。
public abstract class BaseClass
{
protected Parent field;
public BaseClass(Parent someField)
{
this.field = someField
}
public string Property1
{
get { return field.Child1Property; }
set { field.Child1Property = value; }
}
}
コンストラクターで渡すパラメーターは、Children の 1 つになります。Parent 型の変数を介して Child プロパティにアクセスする方法はありますか?
または、これを行うことは可能ですか:
public abstract class BaseClass
{
protected Parent field;
protected Type childType; //Type? Or something else?
public BaseClass(Parent someField)
{
//assign the runtime type of someField to childType
this.field = someField
}
public string Property1
{
get { return ((childType)field).Child1Property; } //Is this possible?
set { ((childType)field).Child1Property = value; }
}
}
Type を使用すると、 ((childType)field).Child1Property が許可されていないため、機能しないようです。問題は、実行時にどのタイプの子が渡されているかしかわからないため、フィールドを適切なタイプにキャストできないように見えることです。
ヘルプ!