获取dotnet核心中当前正在执行的方法的名称

Not*_*ple 13 c# .net-core

我想在dotnet核心应用程序中获取当前正在执行的方法的名称.

有很多关于如何使用常规c#执行此操作的示例,例如

然而,这两种方法的api似乎还没有核心(参见https://github.com/dotnet/corefx/issues/1420)

有没有其他方法可以在.net核心中获取执行方法名称?

小智 23

CallerMemberNameAttribute允许您获取方法的调用方的方法或属性名称.

public void DoProcessing()
{
    TraceMessage("Something happened.");
}

public void TraceMessage(string message,
        [System.Runtime.CompilerServices.CallerMemberName] string memberName = "",
        [System.Runtime.CompilerServices.CallerFilePath] string sourceFilePath = "",
        [System.Runtime.CompilerServices.CallerLineNumber] int sourceLineNumber = 0)
{
    System.Diagnostics.Trace.WriteLine("message: " + message);
    System.Diagnostics.Trace.WriteLine("member name: " + memberName);
    System.Diagnostics.Trace.WriteLine("source file path: " + sourceFilePath);
    System.Diagnostics.Trace.WriteLine("source line number: " + sourceLineNumber);
}

// Sample Output:
//  message: Something happened.
//  member name: DoProcessing
//  source file path: c:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoCS\CallerInfoCS\Form1.cs
//  source line number: 31
Run Code Online (Sandbox Code Playgroud)