NDD,折腾了一下午,反射不出来。public static class ClassA
{
    public static object Method1(string str){}    public static object Method1<T>(IList<T> list){}
}
静态类中有Method12个静态方法,我想反射执行这个泛型方法Method1<T>(IList<T> list)
但是怎么都反射不到这个泛型方法,求帮助谢谢。因为有同名方法,所以我是采用Type.GetType(typeName).GetMethod(methodName, types)来获取方法。
但麻烦的是types,如果用Type.GetType("System.Collections.Generic.IList`1[T]),返回是个null。
如果T写了明确的实体对象,还是无法反射到这个泛型方法。

解决方案 »

  1.   

    参考
    http://www.cnblogs.com/mgen/archive/2011/12/02/2271852.html
      

  2.   


    你这比较屌,动态生成方法,但不是我要的。
    而且里面有句var mbuilder = tb.DefineMethod("doo", MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.Static);
    可我这DefineMethod是个属性,不是方法啊
      

  3.   

    也就是如果方法有重载,想获反射参数中带有泛型的方法,该如何做?help help
      

  4.   

    别的不多说
    只告诉你一个关键字“MethodInfo.MakeGenericMethod()”方法剩下的事情你google把,5秒种找到答案
      

  5.   

    遍历            MethodInfo[] ms = Type.GetType("WindowsApplication1.ClassA").GetMethods();
                foreach (MethodInfo info in ms)
                {
                    if (info.Name == "Method1" && info.IsGenericMethod)
                    {
                        MessageBox.Show("ok");
                        break;
                    }
                }
      

  6.   

    http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/f901efc1-2baa-480f-a3cf-bb5b5df60a80这里说了,这是.net的限制,没有办法单独通过GetMethod获取generic方法,只能遍历了