C#Type.GetMethods()不返回Main()方法

Axa*_*dax 1 c# reflection

我正在编写一个反射工具,我将用它来调用各种类型的方法,我正在简单的程序上测试它.

我很好奇为什么它不会Main()在标准的Visual Studio生成的Program类上返回我的方法

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

当我加载类型Program,并打电话type.GetMethods(); 它返回4种方法从继承Object:ToString,GetHashCode,GetTypeEquals.

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

Jon*_*eet 8

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

(BindingFlags.Static默认包含但NonPublic不包含.)

所以:

var methods = type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic |
                              BindingFlags.Static | BindingFlags.Instance);
Run Code Online (Sandbox Code Playgroud)

(当然,我假设您也想要公共方法和实例方法.)

虽然Main在这里被确定为入口点,但没有其他特别之处 - 你可以像其他方法一样找到它,并调用它.