检查方法 return 类型是否基于泛型参数
Check if method return type is based on generic parameter
当我有 MethodInfo 时,如何检查 return 类型是否基于通用参数?
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);
Here 它被认为是一个问题...我将它用作一个功能:-)
当我有 MethodInfo 时,如何检查 return 类型是否基于通用参数?
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);
Here 它被认为是一个问题...我将它用作一个功能:-)