在整个反思过程中,有没有办法实现这一目标?
从IDictionary<int,int>
获取IDictionary<,>
,每个实例?
我的意图是:
typeof(UniqueKeyQuery<,>).IsAssignableFrom(query.GetType())
而">查询"的类型是 UniqueKeyQuery<Sometype,int>
.
我不想比较名称,因为我希望UniqueKeyQuery是可扩展的。
如果你想要"开放"泛型类型(例如,query
(GetGenericTypeDefinition将起作用:
typeof(UniqueKeyQuery<,>).IsAssignableFrom(
query.GetType().GetGenericTypeDefinition()
)
你可以
试试
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);