您可以嘗試
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繼承時,我確實在驗證的情況下做了大量的思考,並且這個新類不是通用的。 –