Ben*_*n M 75
new StackFrame(1, true).GetMethod().Name
Run Code Online (Sandbox Code Playgroud)
请注意,在发布版本中,编译器可能会内联被调用的方法,在这种情况下,上面的代码将返回调用者的调用者,因此为了安全起见,您应该使用以下方法修饰您的方法:
[MethodImpl(MethodImplOptions.NoInlining)]
Run Code Online (Sandbox Code Playgroud)
Joe*_*ine 14
这将为您提供所在方法的名称:
string currentMethod = System.Reflection.MethodBase.GetCurrentMethod().Name;
Run Code Online (Sandbox Code Playgroud)
请谨慎使用,因为可能会受到性能影响.
To get callers:
StackTrace trace = new StackTrace();
int caller = 1;
StackFrame frame = trace.GetFrame(caller);
string callerName = frame.GetMethod().Name;
Run Code Online (Sandbox Code Playgroud)
这使用堆栈遍历来获取方法名称.调用者的值是调用栈的距离.小心不要走远.