tengo una clase muy simple:suscribirse a un evento con la reflexión
class Trace
{
void WriteTrace()
{
Console.WriteLine("Trace !");
}
}
quiero esta clase se suscribe a un evento, por ejemplo, el evento de carga de un control de formulario. El control y evento son definir dinámicamente así que quiero utilizar la reflexión para hacer esto que estoy intentando algo así:
En mi clase de seguimiento que tengo este método:
public void SubscribeEvent (Control control)
{
if (type.IsAssignableFrom(control.GetType()))
{
Trace test = this;
MethodInfo method = typeof(Trace).GetMethod("WriteTrace");
// Subscribe to the event
EventInfo eventInfo = control.GetType().GetEvent("Load"); // We suppose control is a form
Delegate handler = Delegate.CreateDelegate(eventInfo.EventHandlerType, control, method); // ERROR : Error binding to target method
}
}
}
Hay un error en el última línea: enlace de error al método de destino. ¿Qué hay de malo en mi fragmento?
¡Gracias!
EDIT: Ok, no hay más error pero cuando se genera el evento "Cargar" del formulario, el método WriteTrace no se llama (he puesto un punto de interrupción pero no se alcanza). Por qué ?
Lo siento por la edición, que funciona muy bien :)
¿Por qué querrías usar Reflection si pudieras simplemente suscribirte/agregar un controlador al evento? 'control.Load + = HandlerHere;' ... Por otro lado, ¿eman tow rite 'Form' en lugar de' Control'? Porque primero estás hablando de un formulario. – Bobby
Aquí hay solo un ejemplo, pero debería poder elegir el control y los eventos a seguir. – Florian