查找泛型类型



在整个反思过程中,有没有办法实现这一目标?
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);

相关内容

  • 没有找到相关文章

最新更新