运行时类型的复杂生成

时间:2012-06-08 09:22:16

标签: c# .net reflection

我需要在运行时创建一个List<T>类型:我有一个字符串,表示列表中的单个项目的类型(T)和一个对象数组。 我的问题是:我如何获得List<T>

我希望自己解释一下:)

感谢

2 个答案:

答案 0 :(得分:1)

你可以使用类似的东西:

Type itemType = Type.GetType("my type name as string");
Type listType = typeof(List<>).MakeGenericType(itemType);
return (IList) Activator.CreateInstance(listType);

答案 1 :(得分:1)

首先,你确定要这样做吗?闻起来像是一个设计缺陷。

以下是如何操作的示例:

var stringType = Type.GetType("System.String");
var listType = typeof (List<>);
var stringListType = listType.MakeGenericType(stringType);
var list = Activator.CreateInstance(stringListType) as IList;

list.Add("Foo");
list.Add("Bar");
list.Add("Baz");