Рассмотрим следующий код C #:
class Program
{
static public void Print(string toPrint)
{
Console.WriteLine(toPrint);
}
static void Main(string[] args)
{
Type program = typeof(Program);
MethodInfo methodInfo = program.GetMethod("Print", BindingFlags.Static | BindingFlags.Public);
methodInfo.Invoke(null, new object[] { "a" });
}
}
Когда я запускаю его в Visual Studio 2008 или Visual Studio 2008 и нажимаю точку останова, которую я помещаю в метод «Печать», я получаю следующее вокно callstack:
ConsoleApplication4.exe! ConsoleApplication4.Program.Print (string toPrint)
[От родного к управляемому переходу]
[Управляемый для собственного перехода]
ConsoleApplication4.exe! ConsoleApplication4.Program.Main (string [] args)
Почему RuntimeMethodInfo.Invoke
не отображается в моем стеке вызовов?В конце концов, это управляемый метод, так почему я не вижу его так, как ожидал?
Кроме того, каковы здесь правила?Какие управляемые методы могут отсутствовать в моем стеке вызовов?