从运行时类型创建列表

我想创建一个List,其中T的类型是几个不相关的类(具有相同的构造函数参数),我通过reflection知道。

DataBase = new ArrayList(); foreach (Type T in Types) { DataBase.Add(new List); } 

不幸的是,Visual Studio说’无法找到类型或名称空间T’。 有什么方法可以实现这个,或者将一个List转换为输入T? 谢谢,彼得

你可以使用reflection:

 List database = new List(); foreach (Type t in Types) { var listType = typeof(List<>).MakeGenericType(t); database.Add(Activator.CreateInstance(listType)); } 

您可能会混淆类型和Generic Type Parameters的System.Type类,下面是按您希望的方式实现它的代码:

 var lt = typeof(List<>); foreach (Type T in Types) { var l = Activator.CreateInstance(lt.MakeGenericType(T)); DataBase.Add(l); } 

您可以…使用List (如果您知道您的类型是引用类型,或者可以接受装箱); 或通过reflection创建一个List 。