从泛型类(T)获取类的类型

时间:2016-03-02 14:41:33

标签: .net vb.net generics

我正在尝试获取通用类的类型。大多数问题都围绕着试图从List(Of T)检索Type T的人。相反,我想要类本身的类型,即System.Collections.Generic.List

我正在尝试以下代码,但它返回包含泛型参数的Type。如果我然后尝试使用不同的泛型类型创建类的实例,我会收到错误,因为类型已关闭。

'The type I want to use a a Generic Parameter in a new object
dim O = MasterObject 

'This is the class which is Generic    
dim BaseType as Type = me.getType 

'This is the line that errors, since BaseType already has a Generic Type
dim GenericType as Type=BaseType.MakeGenericType(O.getType())

'This would be the new object, with a new generic type
dim NewObject as Object = Activator.CreateInstance(GenericType,vars)

那么有没有一种方法可以从Type中清除泛型参数,或者某种方式提取没有通用参数的Type?

1 个答案:

答案 0 :(得分:1)

您可以打开一个来电Type.GetGenericTypeDefinition

顺便说一句,如果您真的知道要创建List<T>的实例,可以使用GetType(List(Of T))获取泛型类型定义。