私は、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
です。現在持っているものよりも優れているように見えますが、それでもあまりにも不格好に聞こえます。