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。