繁体   English   中英

反射-将非泛型方法从泛型类型定义导航到具体的方法

[英]Reflection - Navigate a non-generic method from a generic type definition to a concrete one

假设我有一个如下课程:

    class A<T>
    {
        public void Method()
        {
        }
    }

因此,该类是通用的,但其方法不是。

我可以找到方法,说:

var m = typeof(A<int>).GetGenericTypeDefinition().GetMethod("Method");

现在,我想从这个'm'(实际上是A<T>.Method )导航到一个具体的类型,例如A<int>.Method

我想以一种通用的方式做到这一点,即我不想使用方法名,因为我可能遇到参数数量过多的情况。

有没有办法做到这一点,还是我必须用相同的名称加载方法并比较参数?

您可以使用MakeGenericType方法,如下所示:

m.DeclaringType.MakeGenericType(typeof(int))

然后如果真的要这样,则可能再次使用GetMethod

m.DeclaringType.MakeGenericType(typeof(int)).GetMethod("Method");

但是,请考虑Jon Skeet的评论以获得更简单的解决方案。

暂无
暂无

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

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