da C# 5 in poi è possibile ottenere il compilatore di compilarlo per voi, in questo modo:
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"
...
}
Si noti che è possibile utilizzare questo torto passando un valore in modo esplicito:
string notMyName = Helpers.GetCallerName("foo"); // Now notMyName=="foo"
In C# 6, c'è anche nameof
:
public static void MyMethod()
{
...
string name = nameof(MyMethod);
...
}
che non garantisce che si sta usando lo stesso nome come il nome del metodo, anche se - se si utilizza nameof(SomeOtherMethod)
avrà un valore di "SomeOtherMethod"
di corso. Ma se hai capito bene, quindi rifatta il nome di MyMethod
in qualcos'altro, uno strumento di refactoring semi-decente cambierà anche il tuo uso di nameof
.
fonte
2016-06-23 06:04:15
Grazie mille! –
Grazie per il riferimento da C# 6.0 –