46

ブラウジングし、検索し、希望しましたが、率直な答えが見つかりません。

nameofメソッド名を指定せずに使用して現在のメソッド名を取得する方法は C# 6.0 にありますか?

次のように、テスト結果を辞書に追加しています。

Results.Add(nameof(Process_AddingTwoConsents_ThreeExpectedRowsAreWrittenToStream), result);

行をコピーして貼り付けることができるように、メソッド名を明示的に指定する必要がないことをお勧めします。これは、動作しない例です。

Results.Add(nameof(this.GetExecutingMethod()), result);

可能であれば、リフレクションを使用したくありません。

アップデート

これは(示唆されているように)この質問の複製ではありません。nameof現在のメソッド名を取得するために without(!) リフレクションを明示的に使用できるかどうかを尋ねています。

4

4 に答える 4

96

それを達成するために使用することはできませんnameofが、この回避策はどうですか:

以下では、直接的なリフレクション (のようにnameof) を使用せず、明示的なメソッド名も使用しません。

Results.Add(GetCaller(), result);

public static string GetCaller([CallerMemberName] string caller = null)
{
    return caller;
}

GetCallerそれを呼び出すメソッドの名前を返します。

于 2016-06-29T12:00:55.290 に答える