Ich habe gesucht, gesucht und gehofft, kann aber keine klare Antwort finden.
Gibt es in C # 6.0 überhaupt eine Möglichkeit, den aktuellen Methodennamen mit nameof
abzurufen, ohne den Methodennamen anzugeben?
Ich füge meine Testergebnisse einem Wörterbuch wie diesem hinzu:
Results.Add(nameof(Process_AddingTwoConsents_ThreeExpectedRowsAreWrittenToStream), result);
Ich würde es vorziehen, wenn ich den Methodennamen nicht explizit angeben müsste, damit ich die Zeile kopieren und einfügen kann, ein nicht funktionierendes Beispiel:
Results.Add(nameof(this.GetExecutingMethod()), result);
Nach Möglichkeit möchte ich Reflection nicht verwenden.
[~ # ~] Update [~ # ~]
Dies ist kein Duplikat von diese Frage . Ich frage, ob es explizit möglich ist, nameof
ohne (!) Reflexion zu verwenden, um den aktuellen Methodennamen zu erhalten.
Sie können nameof
nicht verwenden, um das zu erreichen, aber wie wäre es mit dieser Problemumgehung:
Im Folgenden wird keine direkte Reflektion (genau wie in nameof
) und kein expliziter Methodenname verwendet.
Results.Add(GetCaller(), result);
public static string GetCaller([CallerMemberName] string caller = null)
{
return caller;
}
GetCaller
gibt den Namen einer Methode zurück, die sie aufruft.
Aufbauend auf der großartigen Antwort von user3185569:
public static string GetMethodName(this object type, [CallerMemberName] string caller = null)
{
return type.GetType().FullName + "." + caller;
}
Dies führt dazu, dass Sie this.GetMethodName()
überall aufrufen können, um den vollständig qualifizierten Methodennamen zurückzugeben.