【发布时间】:2013-04-10 00:57:45
【问题描述】:
是否可以订购 System.Collection.IList 而不将其转换为已知类型?
我收到object 的列表,并使用
var listType = typeof(List<>);
var cListType = listType.MakeGenericType(source.GetType());
var p = (IList)Activator.CreateInstance(cListType);
var s = (IList)source;
我想根据 ID 订购它,它可能可用也可能不可用。
我想产生的是这样的:
if (s.First().GetType().GetProperties().where(m=>m.Name.Contians("Id")).FirstOrDefault != null)
{
s=s.OrderBy(m=>m.Id);
}
但是,s 没有扩展方法“Order”,也没有扩展方法“First”
【问题讨论】:
-
连点什么都不知道怎么点东西???
-
不,如果没有泛型或不编写自己的扩展方法 afaik,这是不可能的。但是您可以做的是将其转换为可以与您的反射解决方案一起使用的对象。
-
如果您不知道这些未知对象是什么,您究竟想按什么排序?