Ответ 1
Вы можете использовать отражение:
List<object> database = new List<object>();
foreach (Type t in Types)
{
var listType = typeof(List<>).MakeGenericType(t);
database.Add(Activator.CreateInstance(listType));
}
Я ищу для создания списка, где тип T - несколько несвязанных классов (с теми же аргументами конструктора), которые я знаю через отражение.
DataBase = new ArrayList();
foreach (Type T in Types)
{
DataBase.Add(new List<T>);
}
К сожалению, Visual Studio говорит, что "Тип или пространство имен T не может быть найдено". Есть ли способ, которым я могу это реализовать, или листинг List для ввода T? Благодаря, Питер
Вы можете использовать отражение:
List<object> database = new List<object>();
foreach (Type t in Types)
{
var listType = typeof(List<>).MakeGenericType(t);
database.Add(Activator.CreateInstance(listType));
}
Вы вводите в заблуждение типы и класс System.Type для Параметры типового типа, вот код для его реализации так, как вы хотите:
var lt = typeof(List<>);
foreach (Type T in Types)
{
var l = Activator.CreateInstance(lt.MakeGenericType(T));
DataBase.Add(l);
}
Вы можете использовать List<object>
(если вы знаете, что ваш тип является ссылочным типом, или бокс допустим); или создать список через отражение.