Pytanie Jak uzyskać nazwę aktualnej funkcji? [duplikować]


Możliwe duplikaty:
Czy możesz użyć odbicia, aby znaleźć nazwę aktualnie wykonywanej metody?
C # jak uzyskać nazwę bieżącej metody z kodu 

Na przykład:

void foo() {
    Console.Write(__MYNAME__);
}

wydrukować: foo

można to zrobić w C #?


44
2018-04-12 19:34


pochodzenie


W .Net 4.5 można użyć CallerMemberNameAttribute, aby uzyskać nazwę dzwoniącego. Widzieć msdn.microsoft.com/en-us/library/... ... Możesz następnie zawinąć treść swojej funkcji w anonimową funkcję, tak jak w ([CallerMemberName] ciąg functionName = "") => {}. Problemy z używaniem metody refleksji, jak w przyjętej odpowiedzi, są następujące: (1) funkcja może być inline i / lub (2) nazwa funkcji może być zaciemniona, jeśli jest niepubliczna, a kod jest zaciemniany. - GreatAndPowerfulOz


Odpowiedzi:


Spróbuj tego:

System.Reflection.MethodBase.GetCurrentMethod().Name 

102
2018-04-12 19:37



Dokładnie to. Dzięki - Jack
Dla osób korzystających z .Net 4.5 istnieje CallerMemberNameAttribute - bohdan_trotsenko


Możesz sprawdzić ślad stosu

using System.Diagnostics;

// get call stack
StackTrace stackTrace = new StackTrace();

// get calling method name
Console.WriteLine(stackTrace.GetFrame(0).GetMethod().Name);

Ale uwaga, jeśli metoda jest inline, otrzymujesz nazwę metody nadrzędnej.


14
2018-04-12 19:36