我有一个类层次结构(在 .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; }
}
}
我在构造函数中传递的参数将是孩子之一。有没有办法通过 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 是不允许的。问题是,我只知道在运行时传递的是什么类型的孩子,因此似乎不可能将字段转换为适当的类型。
帮助!