In alcuni casi può essere necessario conoscere il nome del metodo che ha richiamato una certa routine. Ad esempio, per creare un meccanismo di logging in cui un ipotitetico metodo WriteLog scrive, tra le altre informazioni, anche il nome della funzione che lo ha invocato. Per fare questo, basta analizzare il contenuto dello Stack Trace:
1 StackTrace stackTrace = new StackTrace();
2 StackFrame stackFrame = stackTrace.GetFrame(1);
3 MethodBase methodBase = stackFrame.GetMethod();
4 string methodName = methodBase.Name;
L'istruzione numero 2 recupera il primo stack frame, contenente il riferimento al metodo che ha richiamato la routine attualmente in esecuzione. Se, invece del numero 1, si utilizza, ad esempio, 2, si ottiene il riferimento al secondo stack frame, da cui è possibile recuperare il metodo che ha richiamato il metodo che ha invocato la routine attuale... E così via.
Technorati Tag:
.NET,
Programming,
C#