Eventuali duplicati:
How can I find the method that called the current method?Ottenere chiamata nome della funzione da funzione chiamata
Come posso ottenere il nome della funzione di chiamata dalla funzione chiamata in C#?
Eventuali duplicati:
How can I find the method that called the current method?Ottenere chiamata nome della funzione da funzione chiamata
Come posso ottenere il nome della funzione di chiamata dalla funzione chiamata in C#?
new StackFrame(1, true).GetMethod().Name
Si noti che nel rilascio costruisce il compilatore potrebbe inline il metodo chiamato, nel qual caso il codice di cui sopra sarebbe tornato il chiamante del chiamante, in modo da essere sicuri si dovrebbe decorare il vostro metodo con:
[MethodImpl(MethodImplOptions.NoInlining)]
Attenzione che camminare in questo modo imporrà un colpo di performance abbastanza pesante. Consiglio vivamente di cercare una soluzione che non implichi uno stack walk prima di usarne uno. – jrista
Questa risposta è in realtà migliore delle risposte nella domanda duplicata a causa della menzione dell'attributo MethodImpl. –
So che questo è un dupe e tag .net 3.5, ma per aiutare gli utenti che incappano in questo primo (come me), sarebbe bene indicare nella risposta che in C# 5.0 è ora possibile utilizzare le informazioni sul chiamante come descritto in: http://visualstudiomagazine.com/articles/2012/11/01/more-than-just-async.aspx – acarlon
questo modo si ottiene il nome del metodo sei in:
string currentMethod = System.Reflection.MethodBase.GetCurrentMethod().Name;
Usare con cautela in quanto ci potrebbe essere un calo di prestazioni.
To get callers:
StackTrace trace = new StackTrace();
int caller = 1;
StackFrame frame = trace.GetFrame(caller);
string callerName = frame.GetMethod().Name;
Questo utilizza una passeggiata di stack per ottenere il nome del metodo. Il valore del chiamante è quanto deve andare lontano lo stack di chiamate. Fai attenzione a non andare lontano.
Duplicato di http://stackoverflow.com/questions/171970/how-can-i-find-the-method-that-called-the-current-method –
Questo è un dupe, ma probabilmente vale la pena tenere aperto a causa alla terminologia diversa - potrebbe essere utile per le persone che cercano. – Keith
@Keith: sì, per questo motivo generalmente cerchiamo di mantenere le domande duplicate quando vengono poste in modo significativamente diverso - ecco perché chiuderle aggiunge automaticamente i link in alto, così i futuri utenti possono trovare la loro strada per le risposte più velocemente. – Shog9