假设我有一个课程如下:
class A<T>
{
public void Method()
{
}
}
所以这个类是通用的,但它的方法不是。
我可以找到方法,比如说:
var m = typeof(A<int>).GetGenericTypeDefinition().GetMethod("Method");
现在我想从这个'm'(实际上是A<T>.Method
)导航到具体的类型,例如A<int>.Method
。
我想以一般方式这样做,即我不想使用方法名称,因为我可能会遇到参数数量过多的情况。
有没有办法做到这一点,还是我必须加载具有相同名称和比较参数的方法?
答案 0 :(得分:1)
您可以使用MakeGenericType方法,如下所示:
m.DeclaringType.MakeGenericType(typeof(int))
如果你真的想这样做,可能会再次GetMethod
:
m.DeclaringType.MakeGenericType(typeof(int)).GetMethod("Method");
但是,请考虑Jon Skeet对更简单解决方案的评论。