Extraiga el nombre de un método pasado como parámetro de acción.
Tengo un método principal llamado ExecuteMethod en C# que se encarga de ejecutar el método pasado como parámetro. Ahora me gustaría hacer un registro en un archivo para saber qué método se está ejecutando cada vez (solo me interesa obtener el nombre del método):
public static void ExecuteMethod(Action myMethod)
{
ExecuteMethod(() => { myMethod(); return true; });
}
public static object ExecuteMethod(Func<object> myMethod)
{
string myMethodName = <nombre_del_método>; // ¿Cómo puedo extraer el nombre del método aquí a partir del parámetro myMethod?
MyLog.Write("Llamando a " + myMethodName);
// más cosas aquí
}
Por ejemplo, en mi programa tengo llamadas como las siguientes:
public void m1()
{
ExecuteMethod(() => myCore.SomeMethod1(param1, param2));
}
public void m2()
{
ExecuteMethod(() => myCore.SomeMethod2(param1, param2, null));
}
Luego, desde el método ExecuteMethod de arriba, me gustaría obtener los nombres de estos métodos pasados como parámetro, que serían SomeMethod1 y SomeMethod2 en este caso. ¿Cómo puedo lograr esto?</nombre_del_método>
davy.ai
Para extraer el nombre del método del parámetro myMethod, puedes utilizar el método GetMethodInfo del delegado de método. Aquí te muestro cómo puedes modificar el método ExecuteMethod para lograr esto:
Al llamar a la propiedad Name del objeto MethodInfo devuelto por MyMethod.Method, puedes obtener el nombre del método y almacenarlo en la variable myMethodName con fines de registro.