我有一个IList<object>
其中每一个对象是一个类型的一个实例T
(我不知道在编译时间)。
我需要IList<T>
出于此。 我不能用演员,因为我不知道在编译时的类型,并没有一个演员(类型)的过载,我可以使用。
这是我目前有到位:
private object Map(IList<ApiCallContext> bulk)
{
// god-awful way to build a IEnumerable<modelType> list out of Enumerable<object> where object is modelType.
// quoting lead: "think whatever you do it will be ugly"
Type modelType = model.Method.ModelType;
if (bulk.Count > 0)
{
modelType = bulk.First().Parameters.GetType();
}
Type listType = typeof(List<>).MakeGenericType(modelType);
object list = Activator.CreateInstance(listType);
foreach (object value in bulk.Select(r => r.Parameters))
{
((IList)list).Add(value);
}
return list;
}
我在想什么的是也许我可以创建一个新的LooseList
实现类IList
,只是周围的铸造工作,似乎比我现在有更好,但它仍然听起来太笨重。