代码之家  ›  专栏  ›  技术社区  ›  Axarydax

c type.getmethods()不返回main()方法

  •  1
  • Axarydax  · 技术社区  · 15 年前

    我正在编写一个反射工具,用于调用各种类型的方法,并在简单的程序上对其进行测试。

    我很好奇为什么它不把我的 Main() 标准Visual Studio生成的程序类的方法

    class Program { static void Main(string[] args) { return ; }

    当我加载类型 Program 和呼叫 type.GetMethods() ;它返回从继承的4个方法 Object : ToString , GetHashCode , GetType Equals .

    我猜 Main 是一种特殊的方法,因为它是程序的入口点,但是应该有一种方法来检索 MethodInfo . 有办法弄到吗?

    5 回复  |  直到 15 年前
        1
  •  8
  •   Jon Skeet    15 年前

    你的 Main 方法是私有的,因此需要包括 BindingFlags.NonPublic .

    ( BindingFlags.Static 默认包含,但 NonPublic 不是。

    var methods = type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic |
                                  BindingFlags.Static | BindingFlags.Instance);
    

        2
  •  3
  •   Julien Hoarau    15 年前

    GetMethods()

    GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic)

    More info on Type.GetMethods(BindingsFlags)

        3
  •  2
  •   Andy    15 年前

          MethodInfo[] methods = typeof(Program).GetMethods(BindingFlags.Public
                                                          | BindingFlags.NonPublic
                                                          | BindingFlags.Static
                                                          | BindingFlags.Instance
                                                          );
    
        4
  •  1
  •   Dmitry Karpezo    15 年前

    type.GetMethods(BindingFlags.Static | BindingFlags.NonPublic);
    
        5
  •  -1
  •   dhh    15 年前

    BindingFlags.Static GetMethods