2014-09-18 76 views
1

我想比较两个Type对象是否相等,忽略它们的类型参数比较非通用类型

例如,比较IEnumerable<int>IEnumerable<string>回报,这是有道理的,但我只是想给IEnumerable元素进行比较。

我该怎么做TypeTypeInfo

+1

只是一个术语说明,为了更轻松地与C#社区连接:我们称“reified”类型为“closed”,非reified类型为“open”。见ECMA-334 25.5.2。 – codekaizen 2014-09-18 20:08:39

回答

3

您可以拨打GetType().GetGenericTypeDefinition();以获取通用基本类型。

+2

如果您需要比较可能或不可泛型的任意类型,请在调用'GetGenericTypeDefinition()'之前检查'GetType()。IsGenericType',因为它会引发非泛型类型。 – 2014-09-18 19:38:26