現在使用しているメソッドの名前を取得する方法はありますか?
private void myMethod()
{
string methodName = __CurrentMethodName__;
MessageBox(methodName);
}
クラス名を返す this.ToString() のように、アプリの監視やトレースなどでメソッドの名前を取得する方法はありますか?
現在使用しているメソッドの名前を取得する方法はありますか?
private void myMethod()
{
string methodName = __CurrentMethodName__;
MessageBox(methodName);
}
クラス名を返す this.ToString() のように、アプリの監視やトレースなどでメソッドの名前を取得する方法はありますか?
これはあなたの名前を取得します -
string methodName = System.Reflection.MethodInfo.GetCurrentMethod().Name;
また
string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
.NET 4.5 では発信者情報属性が追加されるため、以下を使用できますCallerMemberNameAttribute
。
using System.Runtime.CompilerServices;
void myMethod()
{
ShowMethodName();
}
void ShowMethodName([CallerMemberName]string methodName = "")
{
MessageBox(methodName);
}
これには、実行時ではなくコンパイル時にメソッド名を焼き付けるという利点があります。残念ながら、誰かが を呼び出すのを防ぐ方法ShowMethodName("Not a real Method")
はありませんが、それは必要ないかもしれません。
単に
public string MyMethod()
{
StackTrace st = new StackTrace ();
StackFrame sf = st.GetFrame (1);
string methodName = sf.GetMethod().Name;
}