从System.Type初始化通用对象

时间:2010-05-14 03:08:26

标签: c# generics

我需要创建一个泛型类型,但我不知道编译时的类型。我想这样做:

Type t = typeof(whatever);
var list = new List<t>

这将无法编译,因为t不是有效类型。但它确实知道一个有效的类型。有没有办法从System.Type中动态创建通用列表?我可能需要反思,没关系,我在这里有点迷失。

1 个答案:

答案 0 :(得分:26)

像这样:

Type t;
Type genericListType = typeof(List<>).MakeGenericType(t);
object list = Activator.CreateInstance(genericListType);

请注意,您只能将其分配给object类型的变量。 (尽管您可以转换为非通用IList接口)

要使用list变量,您可能需要反思。