0

假设我有一堂课如下:

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

所以这个类是通用的,但它的方法不是。

我可以找到方法,说:

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

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

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

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

4

1 回答 1

1

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

m.DeclaringType.MakeGenericType(typeof(int))

GetMethod如果你真的想这样的话,可能会再一次:

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

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

于 2013-09-12T16:59:48.920 回答