Considere este escenario. Tengo un objeto, vamos a llamarlo ... Foo. Foo plantea un evento simple llamado "Cargado". Como parte de la información para el evento, los consumidores necesitarán saber qué objeto Foo planteó el evento. Nuestro equipo ha adoptado el siguiente patrón.C# simple Recaudación de eventos: usar "remitente" frente a EventArgs personalizados
1) Cree una clase nueva que herede de EventArgs; por ejemplo, FooEventArgs: System.EventArgs.
2) Agregue una propiedad de tipo Foo a FooEventArgs, que se establece al pasarla a través del constructor.
3) Declarar el evento utilizando la versión genérica del manejador de sucesos, por lo
public event EventHandler<FooEventArgs> Loaded;
4) Elevar el caso de la clase Foo con la siguiente firma:
Loaded(this, new FooEventArgs(this));
Básicamente lo que hace es hace que el "emisor" sea el objeto foo, pero también pone la referencia del objeto foo en el argumento del evento como una propiedad fuertemente tipada.
Una de las ventajas de hacer esto es que nadie tiene que molestarse en enviar "remitente" cuando manejan el evento, lo que reduce el acoplamiento entre el consumidor del evento y el evento. Otra "ventaja" es que si el tipo del evento eventual tiene que cambiar, y por lo tanto la propiedad fuertemente tipada (que afortunadamente nunca ocurre), entonces en lugar de simplemente tener un código que comience a fallar en el elenco cuando sea nulo, la API realmente se rompe, por lo que se puede arreglar en tiempo de compilación.
Para mí, este patrón parece que podría ser excesivo. ¿Deberían confiar más en el parámetro "remitente" y abandonar los argumentos de eventos personalizados? Mi equipo argumenta que nadie realmente usa el parámetro del remitente. ¿Cuál es la mejor práctica para pasar una referencia al objeto de suceso?
EDIT: Gran retroalimentación hasta ahora, voy a dejar esto abierto por otro día más o menos antes de aceptar uno.
Por otro enfoque a esto, es posible que desee echar un vistazo a "Firma Evento en .NET - ¿Cómo usar un "emisor" fuerte? aquí: http://stackoverflow.com/questions/1046016/event-signature-in-net-using-a-strong-typed-sender –