【发布时间】:2013-05-29 08:04:28
【问题描述】:
我有三个班级:
public class BaseEntity
{
//properties
}
public class Order:BaseEntity
{
//properties
}
public class Customer:BaseEntity
{
//properties
}
我还有一个列表,可以用Customers 填充或用Orders 填充:
IList nongenericList = SomeMethodGetObjects(); //this method return list of customers or list of Orders
有什么方法可以让我在运行时检测nongenericList 对象类型并创建适当的通用列表(在运行时)并将nongenericList 转换为这个创建的通用列表?
例如,如果nongenericList 包含订单,则生成List<Order>,如果nongenericList 包含客户,则生成List<Customer>?
【问题讨论】:
-
您所说的非泛型
List类是什么?你能提供一个指向它的 MSDN 文档的链接吗?你能提供一个创建一个的代码 sn-p 吗? -
你为什么不直接做一个
List<BaseEntity>? -
您至少必须遍历列表,检查每个项目是否属于同一类型。然后,您将创建一个正确类型的新通用列表并将所有元素复制到其中。
标签: c# list generics inheritance runtime