2012-04-12 20 views
44

可能性の重複:たとえば
Can you use reflection to find the name of the currently executing method?
C# how to get the name of the current method from code現在の関数の名前を取得するには?

void foo() { 
    Console.Write(__MYNAME__); 
} 

印刷:foo

IそれはCで可能ですか?この方法は、あなたが親のメソッド名を取得インライン化されている場合

+0

を、あなたは、発信者の名前を取得するためにCallerMemberNameAttributeを使用することができます。 https://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.callermembernameattribute(v=vs.110).aspxを参照してください。次に、関数の本体を次のような無名関数でラップすることができます。 in([CallerMemberName] string functionName = "")=> {}。受け入れられた答えのようにリフレクションメソッドを使用する際の問題は、(1)関数がインライン化されている、および/または(2)関数名が非公開でコードが難読化されている場合、関数名がわかりにくくなる可能性があることです。 – GreatAndPowerfulOz

答えて

102

はこのお試しください:.NET 4.5では

System.Reflection.MethodBase.GetCurrentMethod().Name 
+3

それはまさにそれです。ありがとう – Jack

+5

.Net 4.5を使用している人には、[CallerMemberNameAttribute](https://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.callermembernameattribute.aspx) –

14

あなたは、スタックトレース

using System.Diagnostics; 

// get call stack 
StackTrace stackTrace = new StackTrace(); 

// get calling method name 
Console.WriteLine(stackTrace.GetFrame(0).GetMethod().Name); 

をチェックしかし、注意してくださいすることができます。

関連する問題