閲覧、検索、希望しましたが、直接的な答えを見つけることができません。
C#6.0では、メソッド名を指定せずにnameof
を使用して現在のメソッド名を取得できますか?
次のような辞書にテスト結果を追加しています。
Results.Add(nameof(Process_AddingTwoConsents_ThreeExpectedRowsAreWrittenToStream), result);
メソッド名を明示的に指定する必要がないので、行をコピーして貼り付けることができます。
Results.Add(nameof(this.GetExecutingMethod()), result);
可能であれば、Reflectionを使用したくありません。
[〜#〜] update [〜#〜]
これは(提案されているように) この質問 の複製ではありません。現在のメソッド名を取得するためにnameof
を使用せずに(!)リフレクションを明示的に使用できるかどうかを確認しています。
nameof
を使用してそれを達成することはできませんが、この回避策はどうですか:
以下は(nameof
のような)直接リフレクションを使用せず、明示的なメソッド名も使用しません。
Results.Add(GetCaller(), result);
public static string GetCaller([CallerMemberName] string caller = null)
{
return caller;
}
GetCaller
は、それを呼び出すメソッドの名前を返します。
User3185569の素晴らしい答えに基づいて:
_public static string GetMethodName(this object type, [CallerMemberName] string caller = null)
{
return type.GetType().FullName + "." + caller;
}
_
その結果、どこでもthis.GetMethodName()
を呼び出して完全修飾メソッド名を返すことができます。