Duplicar posible:
How to pass an event to a method?Pasar un evento como un parámetro a un método
¿Es posible pasar de un evento como un parámetro a un método?
Por ejemplo, el siguiente método se suscribe al evento, funciona, y cancela la suscripción del evento:
void SubscribeDoAndUnsubscribe<TElement, TEventArgs>(
IEnumerable<TElement> elements,
??? elementEvent)
where TEventArgs: EventArgs
{
EventHandler<TEventArgs> handler = (sender, e) => { /* Handle an event */ };
foreach (var element in elements)
{
// Subscribe somehow
element.elementEvent += handler
}
// Do things
foreach (var element in elements)
{
// Unsubscribe somehow
element.elementEvent -= handler
}
}
El código de cliente:
var elements = new [] { new Button(), new Button() };
SubscribeDoAndUnsubscribe(elements, ??? /* e => e.Click */);
Si no es posible, ¿Cómo logro la lógica similar en otras formas? ¿Debo pasar un par de delegados para los métodos de suscripción/desinscripción?
Mira aquí: http://stackoverflow.com/questions/8022406/passing-an-event-and-a-delegate-event-handler-into-a-generic-helper-method/8022448#8022448 –