您可以尝试
typeof(UniqueKeyQuery<,>).IsAssignableFrom(query.GetType().GetGenericDefitition())
如果它不工作,你可以使用此方法(静态扩展方法应该处于静态类)
public static bool IsOrInheritsGenericDefinition(this Type ThisType, Type GenericDefinition, out Type DefinitionWithTypedParameters)
{
DefinitionWithTypedParameters = ThisType;
while (DefinitionWithTypedParameters != null)
{
if (DefinitionWithTypedParameters.IsGenericType)
{
if (DefinitionWithTypedParameters.GetGenericTypeDefinition() == GenericDefinition)
return true;
}
DefinitionWithTypedParameters = DefinitionWithTypedParameters.BaseType;
}
return false;
}
调用:
Type QueryType;
query.GetType().IsOrInheritsGenericDefinition(typeof(UniqueKeyQuery<,>), out QueryType);
我相信'IsAssignableFrom'不起作用,因为你永远不能指定一个没有类型参数的泛型类型。也许这就是我在代码中使用该方法的原因。 –
你的实现像魅力一样工作。谢谢,当它从UniqueKeyQuery继承时,我确实在验证的情况下做了大量的思考,并且这个新类不是通用的。 –