繁体   English   中英

检查方法返回类型是否基于通用参数

[英]Check if method return type is based on generic parameter

当我有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);

在这里被认为是一个问题...我将其用作功能:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM