0

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

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

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

我有一个 DerivedClass2,我知道基类中列表的类型,并且我知道会有两种类型的 DerivedClass1A 和 DerivedClass1B。

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

谢谢

4

2 回答 2

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>();
于 2012-06-06T16:22:08.410 回答
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;
        }
    }
}

不过那不是好的设计……你为什么会有那个清单?你真正想做什么?

于 2012-06-06T16:22:38.130 回答