C# 打开泛型类型比较。通用<>"parent"是通用的<T>吗?



我有一个类MyGeneric<T>,以及从类型MyGeneric<字符串>,MyGeneric<int>;,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<>)之间的关系?

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

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

最新更新