Wednesday, February 16, 2011

.NET - Obtener el nombre de un método dinámicamente

A veces encuentro código donde los programadores hardcodean el nombre de su método por todos lados. Quizás por motivos de auditoría, o lo pasan por parámetro, etc. Los más osados pasan ese literal a una constante. Pero nunca pasa de eso.

¿Qué tal si pudiéramos obtener dinámicamente el nombre del método en el que nos encontramos? Bueno es bastante más fácil de lo que pensamos, y se puede obtener de varias formas.

Una forma es usando reflection:


string MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;

Y la otra es usando el objeto StackFrame:


string MethodName = new StackFrame(0).GetMethod().Name;

Bastante simple no? Sin embargo, a veces no queremos saber el método en el cual estamos sino el método que nos invocó. Esto se puede resolver fácilmente con un StackFrame.

string MethodName = new StackFrame(1).GetMethod().Name

Muy simple :). ¿Para qué podemos usar esto? Algunos usos simples son:


  • Auditoría
  • Si obtenemos los métodos, podemos obtener sus parámetros y sus valores. Es excelente información para armar todo un ruteo tras una Exception.
  • Remover literales y constantes =)
  • Cualquier uso que se les ocurra!
Fun Coding!

No comments:

Post a Comment