我们如何定义Genereic List只是给出文本类名?

时间:2017-05-25 10:23:38

标签: c# .net list generics reflection

我想知道如何定义一个通用列表,只提供文本类名称并使用System.Type,如下例所示:

Type entity_type = Type.GetType("Entities.Human, Entities");

List<entity_type> a = new List<entity_type>();

2 个答案:

答案 0 :(得分:1)

您应该获得通用列表的类型,然后使用您的enity类型进行参数化:

Type entity_type = Type.GetType("Entities.Human, Entities");
Type list_type = typeof(List<>);
Type entity_list_type = list_type.MakeGenericType(entity_type);

创建列表实例:

IList entity_list = (IList)Activator.CreateInstance(entity_list_type);
entity_list.Add(entity);

答案 1 :(得分:1)

var type = Type.GetType("Entities.Human, Entities");
var listType = typeof(List<>).MakeGenericType(type);
var list = (IList)Activator.CreateInstance(listType);