gpt4 book ai didi

.net - 找到泛型类型

转载 作者:行者123 更新时间:2023-12-04 04:52:32 25 4
gpt4 key购买 nike

在整个反射(reflection)中有没有办法实现这一目标?
获取 IDictionary<,>来自 IDictionary<int,int> ,每个实例?

我的意图是:

 typeof(UniqueKeyQuery<,>).IsAssignableFrom(query.GetType())

而' 查询 ' 的类型为 UniqueKeyQuery<Sometype,int> .
我不想比较名称,因为我希望 UniqueKeyQuery 是可扩展的。

最佳答案

你可以试试

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);

关于.net - 找到泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17218194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com