web-dev-qa-db-fra.com

Obtenir le nom de la fonction appelante à partir de la fonction appelée

Duplicata possible:
Comment puis-je trouver la méthode qui a appelé la méthode actuelle?

Comment puis-je obtenir le nom de la fonction appelante à partir de la fonction appelée en c #?

36
Sauron
new StackFrame(1, true).GetMethod().Name

Notez que dans les versions, le compilateur peut incorporer la méthode appelée, auquel cas le code ci-dessus retournerait l'appelant de l'appelant, donc pour être sûr, vous devez décorer votre méthode avec:

[MethodImpl(MethodImplOptions.NoInlining)]
75
Ben M

Cela vous donnera le nom de la méthode dans laquelle vous vous trouvez:

string currentMethod = System.Reflection.MethodBase.GetCurrentMethod().Name;

À utiliser avec prudence car il pourrait y avoir un impact sur les performances.

To get callers:
StackTrace trace = new StackTrace();
int caller = 1;

StackFrame frame = trace.GetFrame(caller);

string callerName = frame.GetMethod().Name;

Cela utilise une marche de pile pour obtenir le nom de la méthode. La valeur de l'appelant est jusqu'où remonter la pile d'appels. Attention à ne pas aller trop loin.

14
Joe Caffeine