var pt = Type.GetType("<Program>$");
var m = pt.GetMethod("<Main>$", BindingFlags.Static);
// m is null
Run Code Online (Sandbox Code Playgroud)
好的,我去Program上课了,这很好用。但是当我去抓取Main方法时,系统找不到它,它也不在pt.GetMembers()。这是怎么回事?
您只需要指定要查看非公开成员:
using System;
using System.Reflection;
var pt = Type.GetType("<Program>$");
var m = pt.GetMethod("<Main>$", BindingFlags.Static | BindingFlags.NonPublic);
Console.WriteLine(m); // Prints Void <Main>$(System.String[])
Run Code Online (Sandbox Code Playgroud)
同样使用GetMembers,您需要指定您想要的公共和非公共成员:
using System;
using System.Reflection;
var pt = Type.GetType("<Program>$");
var flags =
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.Static;
foreach (var member in pt.GetMembers(flags))
{
Console.WriteLine(member);
}
Run Code Online (Sandbox Code Playgroud)