c# - see - Usar la reflexión para obtener el nombre del método y los parámetros
see cref c# (3)
Lo que estás buscando es un interceptor. Como su nombre lo dice, un interceptor intercepta una invocación a un método y le permite realizar cosas antes y después de que se llame a un método. Esto es bastante popular en muchos marcos de almacenamiento en caché y registro.
Estoy tratando de entrenar una forma de crear programáticamente una clave para Memcached , basada en el nombre del método y los parámetros. Entonces, si tengo un método,
string GetName(int param1, int param2);
volvería:
string key = "GetName(1,2)";
Sé que puede obtener MethodBase utilizando la reflexión, pero ¿cómo obtengo los valores de los parámetros en la cadena, no los tipos de parámetros?
No puede obtener los valores de los parámetros de método desde la reflexión. Tendría que usar la API de depuración / creación de perfiles. Puede obtener los nombres y tipos de parámetros, pero no los parámetros en sí mismos. Lo siento...
Esto es lo que se me ocurrió (sin embargo, puede que no sea particularmente eficiente):
MethodBase method = MethodBase.GetCurrentMethod();
string key = method.Name + "(";
for (int i = 0; i < method.GetParameters().Length; i++) {
key += method.GetParameters().GetValue(i);
if (i < method.GetParameters().Length - 1)
key += ",";
}
key += ")";