如何向下转换对象列表,以便列表中的每个对象都向下转换为派生类的对象?
这就是场景。
我有一个带有List
基本项目的基类,以及从它继承的两个类:
public class BaseClass
{
public List<BaseItem> items;
protected BaseClass()
{
// some code to build list of items
}
}
public class DerivedClass : BaseClass
{
public DerivedClass : base() {}
}
public class AnotherDerivedClass : BaseClass
{
public AnotherDerivedClass : base() {}
}
public class BaseItem {}
public class DerivedItem : BaseItem {}
public class AnotherDerivedItem : BaseItem {}
这个想法是不必复制构建项目列表所需的代码。有我需要的BaseItem
所有基本东西,我总是可以向下转换BaseItem
到派生项目之一。
当我有它们的列表时,问题就出现了。List
of是在BaseItem
中声明的,BaseClass
因为所有派生类都必须拥有它。但是在运行时访问它时,我似乎无法向下转换为派生类。