我正在检查一组Type对象。我无法确定如何取出基本的'包含通用参数的类型的部分。
即。如何从Aaa
typeof(Aaa<Bbb>)
Bbb
部分可通过GenericTypeArguments
数组获得。有一个BaseType
属性,但它返回typeof(object)
。
似乎我可以解析FullName
属性来确定类型,但必须有更好的方法来做到这一点吗?
答案 0 :(得分:3)
我想你可能在寻找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#术语。