日期:2014-05-18  浏览次数:21141 次

如何反射静态泛型方法?
NDD,折腾了一下午,反射不出来。
C# code

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写了明确的实体对象,还是无法反射到这个泛型方法。

------解决方案--------------------
遍历
C# code

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

------解决方案--------------------
探讨

遍历
C# code

MethodInfo[] ms = Type.GetType("WindowsApplication1.ClassA").GetMethods();
foreach (MethodInfo info in ms)
{
if (info.Name == "Method……

------解决方案--------------------
http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/f901efc1-2baa-480f-a3cf-bb5b5df60a80

这里说了,这是.net的限制,没有办法单独通过GetMethod获取generic方法,只能遍历了