我正在尝试获取通用类的类型。大多数问题都围绕着试图从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?
答案 0 :(得分:1)
您可以打开一个来电Type.GetGenericTypeDefinition
。
顺便说一句,如果您真的知道要创建List<T>
的实例,可以使用GetType(List(Of T))
获取泛型类型定义。