我有一个IList<object>
每个对象都是一个类型的实例T
(我在编译时不知道)。
我需要IList<T>
摆脱这个。我不能使用 Cast 因为我在编译时不知道类型,并且没有可以使用的 Cast(Type) 重载。
这是我目前所拥有的:
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
并围绕铸件工作,看起来比我目前拥有的更好,但听起来还是太笨重了。