¿Cómo puedo encontrar el método que llamó al método actual?
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.
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
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]
.