获取调用方方法的名称
本文关键字:方法 调用 方方法 获取 | 更新日期: 2023-09-27 17:56:54
假设,我调用GetMethodB(),它作为参数传递给GetmethodA()和GetMethodAA()。如何获取调用 GetMethodB() 的这些方法的名称;
ClassName.GetMethodA(GetMethodB());
ClassName.GetMethodAA(GetMethodB());
你不能这样做:在调用GetMethodB
时,GetMethodA
和GetMethodAA
都不是活动状态。
调用序列如下所示:
- 您的方法调用
GetMethodB()
并获取其结果 - 您的方法调用
GetMethodA(...)
传递GetMethodB()
调用的结果 - 您的方法再次调用
GetMethodB()
,并获取其结果 - 您的方法调用
GetMethodAA(...)
传递第二次GetMethodB()
调用的结果
在这两种情况下,GetMethodB
的调用方都是当前方法,从该方法完成调用。
如果GetMethodB
需要知道其调用方,则应显式标识方法的调用方 - 例如,通过传递enum
或string
参数。
这两个方法使用 getmethodB 的结果调用,因此 getmethodB 的调用者与 getmethodA 和/或 getmethodAA 的调用者相同。您无法找出另一个方法的结果传递给哪个方法。
- 所以首先getMethodB被称为,
- 捕获结果
- 并传递给其他方法。
调用堆栈或任何其他技巧在这里都无济于事。
使用 StackFrame
var sf = new StackTrace().GetFrame(1);
var callingMethodName = sf.GetMethod().Name;