派生类中的派生成员对象

时间:2014-08-01 10:18:17

标签: c# oop

我有以下课程:

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类继承一个成员。有没有办法实现类似的东西?如果没有,那么当需要类似的结构时通常如何进行?

1 个答案:

答案 0 :(得分:4)

很难确定您的具体要求,但您可以尝试使用类型为genericsconstraints

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,因此不需要转换。