Possible en double:
How can I find the method that called the current method?Obtenir appel nom de la fonction de fonction appelée
Comment puis-je obtenir le nom de la fonction d'appel de la fonction appelée en C#?
Possible en double:
How can I find the method that called the current method?Obtenir appel nom de la fonction de fonction appelée
Comment puis-je obtenir le nom de la fonction d'appel de la fonction appelée en C#?
new StackFrame(1, true).GetMethod().Name
Notez que dans la version construit le compilateur pourrait inline la méthode appelée, dans ce cas, le code ci-dessus renverrait l'appelant de l'appelant, afin d'être en sécurité, vous devez décorer votre méthode avec:
[MethodImpl(MethodImplOptions.NoInlining)]
Méfiez-vous que la marche de la pile de cette façon imposera un coup de performance assez lourd. Je recommande fortement de chercher une solution qui n'implique pas une pile avant d'en utiliser une. – jrista
Cette réponse est en fait meilleure que les réponses dans la question en double en raison de la mention de l'attribut MethodImpl. –
Je sais que c'est un dupe et étiqueté .net 3.5, mais pour aider les chercheurs qui trébuchent sur celui-ci en premier (comme moi), il serait bon d'indiquer dans votre réponse qu'en C# 5.0, vous pouvez utiliser les informations de l'appelant dans: http://visualstudiomagazine.com/articles/2012/11/01/more-than-just-async.aspx – acarlon
vous obtiendrez le nom de la méthode que vous êtes:
string currentMethod = System.Reflection.MethodBase.GetCurrentMethod().Name;
Utiliser avec prudence, car il pourrait y avoir une baisse de performance.
To get callers:
StackTrace trace = new StackTrace();
int caller = 1;
StackFrame frame = trace.GetFrame(caller);
string callerName = frame.GetMethod().Name;
Ceci utilise une pile de marche pour obtenir le nom de la méthode. La valeur de l'appelant est à quelle distance de la pile d'appels aller. Veillez à ne pas aller trop loin.
Duplicata de http://stackoverflow.com/questions/171970/how-can-i-find-the-method-that-called-the-current-method –
Ceci est une dupe, mais vaut probablement la peine d'être ouverte en raison à la terminologie différente - pourrait être utile pour les personnes qui cherchent. – Keith
@Keith: Oui, pour cette raison, nous essayons généralement de garder les questions en double quand on leur demande de manière très différente - c'est pourquoi les fermer automatiquement ajoute les liens tout en haut, de sorte que les futurs chercheurs puissent trouver leur chemin. les réponses plus rapidement. – Shog9