我目前的代码看起来有点像这样。
class BaseClass2
{
public List<BaseClass1> list { get; set; }
}
class DerivedClass2 : BaseClass2
{
public DerivedClass1A objA { get; set; }
public DerivedClass1B objB { get; set; }
}
我所拥有的是DerivedClass2,我知道基类中列表的类型,我知道有两种类型的DerivedClass1A和DerivedClass1B。
我可以像上面那样创建新变量,但我不想使用内存并巧妙地访问和设置原始列表,我该怎么做?
由于
答案 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;
}
}
}
虽然这不是好设计......为什么你会有这个名单?你真的想做什么?