【发布时间】:2011-07-10 21:02:15
【问题描述】:
考虑以下 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 中运行它并遇到我在“打印”方法中放置的断点时,我在调用堆栈窗口中得到以下信息:
ConsoleApplication4.exe!ConsoleApplication4.Program.Print(字符串 打印)
[本机到托管转换]
[托管到原生转换]
ConsoleApplication4.exe!ConsoleApplication4.Program.Main(string[] 参数)
为什么RuntimeMethodInfo.Invoke 没有出现在我的调用堆栈中?毕竟它是一种托管方法,所以为什么我没有看到它的预期呢?
另外,一般来说,这里的规则是什么?我的调用堆栈中可能会缺少哪些托管方法?
【问题讨论】:
标签: c# visual-studio debugging visual-studio-debugging