[英]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.