使用属性将派生类成员变量引用到基类成员变量

时间:2012-06-06 16:18:20

标签: c# inheritance properties

我目前的代码看起来有点像这样。

class BaseClass2
{
    public List<BaseClass1> list { get; set; }
}

class DerivedClass2 : BaseClass2
{
    public DerivedClass1A objA { get; set; }
    public DerivedClass1B objB  { get; set; }
}

我所拥有的是DerivedClass2,我知道基类中列表的类型,我知道有两种类型的DerivedClass1A和DerivedClass1B。

我可以像上面那样创建新变量,但我不想使用内存并巧妙地访问和设置原始列表,我该怎么做?

由于

2 个答案:

答案 0 :(得分:1)

您可以使用泛型:

class BaseClass2<T>
  T : BaseClass1
{
    public List<T> list { get; set; }
}

class DerivedClass2 : BaseClass2<BaseClass1>
{
    public DerivedClass1A objA { get; set; }
    public DerivedClass1B objB  { get; set; }
}

或者,如果您只想从列表中获取子类,可以使用TypeOf()方法:

baseClass2Instance.list.TypeOf<DerivedClass1A>();

答案 1 :(得分:0)

你的意思是这样吗?

class DerivedClass2 : BaseClass2
{
    public DerivedClass1A objA
    {
        get
        {
            return (DerivedClass1A)base.list[0];
        }
        set
        {
            base.list[0] = value;
        }
    }

    public DerivedClass1B objB
    {
        get
        {
            return (DerivedClass1B)base.list[1];
        }
        set
        {
            base.list[1] = value;
        }
    }
}

虽然这不是好设计......为什么你会有这个名单?你真的想做什么?