【问题标题】:Check if two generic types are equal检查两个泛型类型是否相等
【发布时间】:2013-05-02 02:52:13
【问题描述】:

我需要判断一个类型是否是某个泛型类型。

class MyType<T> {}
var instance = new MyType<int>();
var type = instance.GetType();

这个检查不起作用,但这是我要检查的。如果该类型是该泛型类型,则不管T 是什么。

type == typeof( MyType<> )

这确实有效,但感觉很脏。它也可能是错误的,因为它不是FullName

type.Name == typeof( MyType<> ).Name

我假设有一种方法可以做到这一点,但我还没有找到。使用 IsAssignableFrom 将不起作用,因为我需要知道当前类型是否相等,而不是它的父母之一。

【问题讨论】:

    标签: c# generics types


    【解决方案1】:

    如果对象的具体类型是MyType&lt;T&gt;,这将起作用。它不适用于派生自MyType&lt;T&gt; 的类型的实例,并且如果MyType&lt;T&gt; 是接口类型,则将不起作用。

    if (type.IsGenericType
        && type.GetGenericTypeDefinition() == typeof(MyType<>))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多