如何按字符串名称创建List <usermodel>,例如&#34; UserModel&#34;

时间:2016-12-29 11:17:12

标签: c# generics reflection

我有型号名称,如

  

的usermodel

我希望通过字符串变量创建UserModel列表,其中包含&#34; UserModel&#34;价值如

string className = "UserModel";
List<className> users = new List<className>();

感谢

1 个答案:

答案 0 :(得分:2)

您需要找到通用参数的类型。如果您拥有完全限定名称,则可以使用Type.GetType;如果您知道全名和汇编,则可以使用yourAssembly.GetType

string typeName = "System.Int32";
var genericArgument = Type.GetType(typeName);

现在,您可以使用List<T>

创建此类型的.MakeGenericType类型
var genericType = typeof (List<>).MakeGenericType(genericArgument);

现在你需要实例化这个List<T>

object result = Activator.CreateInstance(genericType);