我正在编写一个反射工具,我将用它来调用各种类型的方法,我正在简单的程序上测试它.
我很好奇为什么它不会Main()在标准的Visual Studio生成的Program类上返回我的方法
class Program
{
static void Main(string[] args)
{ return ; }
当我加载类型Program,并打电话type.GetMethods(); 它返回4种方法从继承Object:ToString,GetHashCode,GetType和Equals.
我猜Main是一个特殊的方法,因为它是程序的入口点,但应该有一种方法来检索它MethodInfo.有办法搞定吗?
您的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在这里被确定为入口点,但没有其他特别之处 - 你可以像其他方法一样找到它,并调用它.