【发布时间】:2016-07-12 21:15:51
【问题描述】:
按照this post 上的示例,我发现了如何动态创建泛型类型列表。 现在,我的问题是我想将未知来源列表中的项目添加到创建的列表 - 有什么方法可以实现吗?
编辑 我从包含业务对象的源列表开始,但我绝对需要正确类型的输出列表,因为下游绑定需要它。
我的非编译代码如下:
IList<object> sourceList; // some list containing custom objects
Type t = typeof(IList).MakeGenericType(sourceList[0].GetType());
IList res = (IList)Activator.CreateInstance(t);
foreach (var item in sourceList) {
reportDS.Add(item); // obviously does not compile
}
【问题讨论】:
-
如果将 item 转换为列表类型会发生什么
-
sourceList和reportDS是什么?你知道编译时 it 是什么类型吗?如果不是,为什么不直接使用List<object>? -
当你真正需要说
typeof(List<>)时,你正在使用typeof(IList) -
sourceList是IList<object>,但我需要转换为正确的类型typeof(sourceList[0]),因为该列表上的下游绑定需要列表具有正确的类型...我同意发布以避免这个明显的答案! -
那么为什么不直接
reportDS = sourceList.Cast<Newtype>()呢?
标签: c# list generic-list