如何将对象列表向下转换,以使列表中的每个对象都被向下转换为派生类的对象?
以下是情景:
我有一个基类和继承自它的两个类,其中基类拥有一个基础项目的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
向下转换为派生项目之一。
问题出现在我有一个它们的列表时。因为所有派生类都必须拥有它,所以 BaseClass
中声明了 BaseItem
的 List
。但是,在运行时访问它时,我似乎无法向下转换为派生类。