¿Cómo puedo encontrar el método que llamó al método actual?

Resuelto flipdoubt asked hace 16 años • 18 respuestas

Al iniciar sesión en C#, ¿cómo puedo saber el nombre del método que llamó al método actual? Lo sé todo System.Reflection.MethodBase.GetCurrentMethod(), pero quiero ir un paso por debajo de esto en el seguimiento de la pila. He considerado analizar el seguimiento de la pila, pero espero encontrar una forma más limpia y explícita, algo así como Assembly.GetCallingAssembly()pero para métodos.

flipdoubt avatar Oct 05 '08 20:10 flipdoubt
Aceptado

Prueba esto:

using System.Diagnostics;
// Get call stack
StackTrace stackTrace = new StackTrace(); 
// Get calling method name
Console.WriteLine(stackTrace.GetFrame(1).GetMethod().Name);

un trazador de líneas:

(new System.Diagnostics.StackTrace()).GetFrame(1).GetMethod().Name
Firas Assaad avatar Oct 05 '2008 13:10 Firas Assaad

En C# 5, puedes obtener esa información usando la información de la persona que llama :

//using System.Runtime.CompilerServices;
public void SendError(string Message, [CallerMemberName] string callerName = "") 
{ 
    Console.WriteLine(callerName + "called me."); 
} 

También puedes conseguir el [CallerFilePath]y [CallerLineNumber].

Coincoin avatar Mar 08 '2012 16:03 Coincoin