我正在检查一组Type对象。我无法确定如何提取包含泛型参数的类型的"基本"部分。
ie。如何从typeof(Aaa<Bbb>)
得到Aaa
Bbb
部分通过GenericTypeArguments
阵列可用。有一个BaseType
属性,但是它返回typeof(object)
。
似乎我可以解析FullName
属性来确定类型,但必须有更好的方法来做到这一点?
我想你可能在找GetGenericTypeDefinition
:
返回一个
Type
对象,该对象表示一个泛型类型定义,当前的泛型类型可以从该定义中构造。
:
typeof(Aaa<Bbb>);
如您所见,为Aaa<Bbb>
提供类型对象。而:
typeof(Aaa<Bbb>).GetGenericTypeDefinition();
将为Aaa<T>
1(或Aaa
的类型参数名称)提供类型对象。例如,您可以通过MakeGenericType
当然,如果您只是想通过typeof()
表达式获得开放泛型类型,您可以使用:
typeof(Aaa<>);
1在CLR术语中,这是
Aaa`1
而不是Aaa<T>
,但我在这个答案中坚持使用c#术语