C# 比较非具体化类型

C# 比较非具体化类型,c#,generics,reflection,C#,Generics,Reflection,我想比较两个Type对象是否相等,而不考虑它们的类型参数 例如,比较IEnumerable和IEnumerable会返回false,这很有意义,但我只想比较IEnumerable元素 如何使用Type或TypeInfo执行此操作?您可以调用GetType().GetGenericTypeDefinition()获取泛型基类型。如果您需要比较可能是泛型的或可能不是泛型的任意类型,请在调用GetGenericTypeDefinition()之前检查isGenericTypeDefinition(),

我想比较两个
Type
对象是否相等,而不考虑它们的类型参数

例如,比较
IEnumerable
IEnumerable
会返回false,这很有意义,但我只想比较
IEnumerable
元素


如何使用
Type
TypeInfo
执行此操作?

您可以调用
GetType().GetGenericTypeDefinition()
获取泛型基类型。

如果您需要比较可能是泛型的或可能不是泛型的任意类型,请在调用
GetGenericTypeDefinition()
之前检查
isGenericTypeDefinition()
,就像它为非泛型类型抛出的那样。只是一个术语说明,为了更方便地与C#社区连接:我们称之为具体化类型“封闭”和非具体化类型“开放”。见ECMA-334 25.5.2。