Von C# 5 ab können Sie den Compiler bekommen es für Sie zu füllen, wie folgt aus:
using System.Runtime.CompilerServices;
public static class Helpers
{
public static string GetCallerName([CallerMemberName] caller = null)
{
return caller;
}
}
In MyMethod
:
public static void MyMethod()
{
...
string name = Helpers.GetCallerName(); // Now name=="MyMethod"
...
}
Beachten Sie, dass diese falsch verwenden können durch explizite Übergabe eines Wertes:
string notMyName = Helpers.GetCallerName("foo"); // Now notMyName=="foo"
obwohl
public static void MyMethod()
{
...
string name = nameof(MyMethod);
...
}
Das garantiert nicht, dass Sie die gleichen Namen wie der Name der Methode verwenden, - wenn Sie nameof(SomeOtherMethod)
verwenden sie einen Wert von "SomeOtherMethod"
von haben:
In C# 6, dann ist es auch nameof
Kurs. Aber wenn Sie es richtig machen, dann den Namen MyMethod
zu sonst etwas Refactoring, jedes halbwegs anständige Refactoring-Tool wird die Nutzung von nameof
auch ändern.
Vielen Dank! –
Danke für den Hinweis von C# 6.0 –