Подтвердить что ты не робот

Инициализировать общий объект из System.Type

Мне нужно создать общий тип, но я не знаю тип во время компиляции. Я хотел бы сделать это:

Type t = typeof(whatever);
var list = new List<t>

это не будет компилироваться, так как t не является допустимым типом. Но он знает все о допустимом типе. Есть ли способ динамически создавать общий список из System.Type, как это? Мне может понадобиться размышление, и это нормально, я просто немного потерялся здесь.

4b9b3361

Ответ 1

Вот так:

Type t;
Type genericListType = typeof(List<>).MakeGenericType(t);
object list = Activator.CreateInstance(genericListType);

Обратите внимание, что вы можете назначить его только переменной типа object. (Несмотря на то, что вы можете использовать его для нестандартного интерфейса IList)

Чтобы использовать переменную list, вам, вероятно, понадобится отражение.