获取调用方方法的名称

本文关键字:方法 调用 方方法 获取 | 更新日期: 2023-09-27 17:56:54

假设,我调用GetMethodB(),它作为参数传递给GetmethodA()和GetMethodAA()。如何获取调用 GetMethodB() 的这些方法的名称;

ClassName.GetMethodA(GetMethodB());
ClassName.GetMethodAA(GetMethodB());

获取调用方方法的名称

你不能这样做:在调用GetMethodB时,GetMethodAGetMethodAA都不是活动状态。

调用序列如下所示:

  • 您的方法调用 GetMethodB() 并获取其结果
  • 您的方法调用GetMethodA(...)传递GetMethodB()调用的结果
  • 您的方法再次调用GetMethodB(),并获取其结果
  • 您的方法调用GetMethodAA(...)传递第二次GetMethodB()调用的结果

在这两种情况下,GetMethodB 的调用方都是当前方法,从该方法完成调用。

如果GetMethodB需要知道其调用方,则应显式标识方法的调用方 - 例如,通过传递enumstring参数。

这两个方法使用 getmethodB 的结果调用,因此 getmethodB 的调用者与 getmethodA 和/或 getmethodAA 的调用者相同。您无法找出另一个方法的结果传递给哪个方法。

  • 所以首先getMethodB被称为,
  • 捕获结果
  • 并传递给其他方法。

调用堆栈或任何其他技巧在这里都无济于事。

使用 StackFrame

var sf = new StackTrace().GetFrame(1);
var callingMethodName = sf.GetMethod().Name;