可能重复:
How can I find the method that called the current method?
如何从c#中的被调用函数中获取调用函数名称?
答案 0 :(得分:74)
new StackFrame(1, true).GetMethod().Name
请注意,在发布版本中,编译器可能会内联被调用的方法,在这种情况下,上面的代码将返回调用者的调用者,因此为了安全起见,您应该用以下方法修饰您的方法:
[MethodImpl(MethodImplOptions.NoInlining)]
答案 1 :(得分:14)
这将为您提供所在方法的名称:
string currentMethod = System.Reflection.MethodBase.GetCurrentMethod().Name;
谨慎使用,因为可能会有性能损失。
To get callers:
StackTrace trace = new StackTrace();
int caller = 1;
StackFrame frame = trace.GetFrame(caller);
string callerName = frame.GetMethod().Name;
这使用堆栈遍历来获取方法名称。调用者的值是调用栈的距离。小心不要走远。