Saltar al contenido

Cómo obtener el nombre del método actual del código

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *