当我有一个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的开放版本或者在那里一种更容易(也更快)的方式?
答案 0 :(得分:1)
我的立场得到纠正......
假设:
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);
Here它被认为是一个问题...我将它用作功能: - )