我希望创建一个List,其中T的类型是几个不相关的类(具有相同的构造函数参数),我通过反射知道。
DataBase = new ArrayList();
foreach (Type T in Types)
{
DataBase.Add(new List<T>);
}
不幸的是,Visual Studio说“无法找到类型或命名空间T”。 有什么办法可以实现这个,或者将一个List转换为T型? 谢谢, 彼得
答案 0 :(得分:20)
您可以使用反射:
List<object> database = new List<object>();
foreach (Type t in Types)
{
var listType = typeof(List<>).MakeGenericType(t);
database.Add(Activator.CreateInstance(listType));
}
答案 1 :(得分:0)
您混淆了类型和Generic Type Parameters的System.Type类,以下是按您希望的方式实现它的代码:
var lt = typeof(List<>);
foreach (Type T in Types)
{
var l = Activator.CreateInstance(lt.MakeGenericType(T));
DataBase.Add(l);
}
答案 2 :(得分:0)
你可以......使用List<object>
(如果你知道你的类型是引用类型,或者拳击是可以接受的);或create a List via reflection。