【问题标题】:C# Open generic type comparison. Generic<> is "parent" of Generic<T>?C# 打开泛型类型比较。 Generic<> 是 Generic<T> 的“父级”?
【发布时间】:2016-04-09 04:26:36
【问题描述】:

我有一个 MyGeneric 类,以及一些从 MyGeneric、MyGeneric、MyGeneric... 等类型创建的缓存数据。

我必须检查某些数据以查看它是否是 MyGeneric,我的代码如下:

if (data is MyGeneric<>) { // can't compile
    // ... do something
}

if (data.GetType() == typeof(MyGeneric<>)
    || typeof(MyGeneric<>).isAssginableFrom(data.GetType())) { 
    // no exception but none of these comparison works
}

或者这种愚蠢的实现有效,但我想把它扔掉:

if (data.GetType().Name.StartsWith(typeof(MyGeneric<>).Name) { ... }

有没有办法检查实际数据类型和开放泛型类型(MyGeneric)之间的关系?

【问题讨论】:

    标签: c# generics comparison open-generics


    【解决方案1】:

    你所称的开放泛型被称为泛型类型定义

    if(data.GetType().GetGenericTypeDefinition() == typeof(MyGeneric<>))
    {
    
    }
    

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多