登录C#时,如何学习调用当前方法的方法的名称?我知道所有这些System.Reflection.MethodBase.GetCurrentMethod(),但我想在堆栈跟踪中向下迈出一步.我考虑过解析堆栈跟踪,但我希望找到一种更清晰,更明确的方法,比如Assembly.GetCallingAssembly()方法.
在上一个问题(获取对象调用层次结构)中,我得到了这个有趣的答案:
调用堆栈不是告诉你你来自哪里.它是告诉你下一步的去向.
据我所知,当到达函数调用时,程序通常会执行以下操作:
在调用代码时:
在被叫目标代码中:
返回过程:撤消我们调用函数时所做的操作,即展开/弹出调用堆栈:
题:
如何将其视为"告诉您下一步的去向"而不是"告诉您从何而来"?
在C#的JIT或C#的运行时环境中是否存在使得调用堆栈以不同方式工作的东西?
感谢有关调用堆栈描述的文档的任何指示 - 有大量关于传统调用堆栈如何工作的文档.
我有以下班级结构。类 A 从类 B 和 C 的构造函数中调用。
Class A
{
A()
}
Class B
{
B()
{
A();
}
}
Class C
{
C()
{
A();
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法知道对 A() 的调用是来自 B() 还是 C()?我不想在构造函数中传递任何对象。