检查方法返回类型是否基于泛型参数
本文关键字:泛型 参数 于泛型 方法 返回类型 是否 检查 | 更新日期: 2023-09-27 17:59:56
当我有MethodInfo时,我如何检查返回类型是否基于泛型参数?
public class GenericClass<T>
{
public class InnerClass
{
public static T A()
{
return default(T);
}
}
}
当我检查时
typeof(GenericClass<>.InnerClass).GetMethod("A").ReturnType.IsGenericParameter
我得到true
,但如果我只有GenericClass<int>
的(封闭的)MethodInfo怎么办?我是否必须沿着嵌套类型的路径走,检查是否有IsGeneric == true
,然后获得此类型的GenericTypeDefinition,然后通过实例化打开的类型沿着路径走,直到我可以创建MethodInfo的打开版本,或者有更简单(更快)的方法吗?
我被纠正了。。。
给定:
public class GenericClass<T1>
{
public class InnerClass<T2>
{
public static Tuple<T1, T2, T3> A<T3>()
{
return null;
}
}
}
Type type = typeof(GenericClass<int>.InnerClass<long>);
var methodInfo = type.GetMethod("A");
MethodInfo method = (MethodInfo)type.Module.ResolveMethod(methodInfo.MetadataToken);
在这里,它被认为是一个问题。。。我使用它作为一个功能:-)