我有以下课程:
public class A {
public C mObj:
}
public class B : A {
}
public class C {
public int val1;
}
public class D : C {
public int val2;
}
我以inst.mObj = new D();
的方式初始化所有B类实例。当我有一个B类实例时,我最好使用mObj
来访问D类的所有成员,但是由于继承,我不能在没有先插入D的情况下这样做。
我希望B类有一个D类的成员对象,但我会自动从C类继承一个成员。有没有办法实现类似的东西?如果没有,那么当需要类似的结构时通常如何进行?
答案 0 :(得分:4)
很难确定您的具体要求,但您可以尝试使用类型为generics的constraints:
public class A<T>
where T : C
{
public T mObj:
}
public class B : A<D>
{
}
public class C
{
public int val1;
}
public class D : C
{
public int val2;
}
在这种情况下,mObj
中的B
类型为D
,因此不需要转换。