Te doy la bienvenida a proyecto on line, en este lugar vas a hallar la resolución de lo que buscas.
Solución:
Llamar System.Reflection.MethodBase.GetCurrentMethod().Name
desde dentro del método.
using System.Diagnostics;
...
var st = new StackTrace();
var sf = st.GetFrame(0);
var currentMethodName = sf.GetMethod();
O, si desea tener un método auxiliar:
[MethodImpl(MethodImplOptions.NoInlining)]
public string GetCurrentMethod()
var st = new StackTrace();
var sf = st.GetFrame(1);
return sf.GetMethod().Name;
Actualizado con créditos a @stusmith.
Desde la versión 6 de C#, simplemente puede llamar:
string currentMethodName = nameof(MyMethod);
En C# versión 5 y .NET 4.5 puede usar el [CallerMemberName] attribute hacer que el compilador genere automáticamente el nombre del método de llamada en un string argumento. Otros útiles attributes son [CallerFilePath] para que el compilador genere la ruta del archivo del código fuente y [CallerLineNumber] para obtener el número de línea en el archivo de código fuente de la instrucción que realizó la llamada.
Antes de eso, todavía había algunas formas más complicadas de obtener el nombre del método, pero mucho más simples:
void MyMethod()
string currentMethodName = "MyMethod";
//etc...
Aunque es probable que una refactorización no lo arregle automáticamente.
Si no le importa en absoluto el (considerable) costo de usar Reflection
entonces este método auxiliar debería ser útil:
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Reflection;
//...
[MethodImpl(MethodImplOptions.NoInlining)]
public static string GetMyMethodName()
var st = new StackTrace(new StackFrame(1));
return st.GetFrame(0).GetMethod().Name;
Reseñas y puntuaciones del artículo
Si te ha sido provechoso nuestro artículo, sería de mucha ayuda si lo compartieras con otros seniors de este modo nos ayudas a dar difusión a nuestro contenido.