2016-12-13 156 views
7

我想在dotnet核心應用程序中獲取當前執行方法的名稱。在dotnet核心中獲取當前執行方法的名稱

有很多的如何做到這一點與普通的C#如

然而,對於這兩種方法的API似乎不是有核心尚未例子(看到https://github.com/dotnet/corefx/issues/1420

有沒有另一種方式,我可以在.net核心執行方法的名稱?

+0

爲什麼不直接使用'nameof(YourCurrentMethod)'? –

+0

此外,一個更相關的GitHub問題將是https://github.com/dotnet/corefx/issues/12496 –

+0

'nameof(YourCurrentMethod)'並不比使用字符串更好,感謝問題鏈接看起來像該方法也將在未來的版本中發佈。也許答案是不可能atm –

回答

13

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 
+0

多數民衆贊成真棒,謝謝 –

1

最簡單的方法是使用:

System.Reflection.MethodBase.GetCurrentMethod()名稱

相關問題