Tengo una aplicación que consta de varios ensamblajes diferentes, uno de los cuales contiene las diversas interfaces que obedecen las clases, y mediante el cual las clases se comunican a través de los límites del ensamblaje. Hay varias clases que disparan eventos, y varias que están interesadas en estos eventos.C# Mejor práctica: controlador de eventos centralizado o no
Mi pregunta es la siguiente: ¿es una buena práctica implementar un EventConsolidator central de algún tipo? Esto estaría altamente acoplado, ya que necesitaría conocer cada clase (o al menos su interfaz) lanzando un evento, y cada consumidor de un evento necesitaría tener una referencia a EventConsolidator para poder suscribirse.
Actualmente tengo la situación en que la clase A conoce la clase B (pero no C), la clase B conoce la clase C, etc. Luego, si C desencadena un evento B necesita recogerlo y activar su propio evento para A responder. Este tipo de cadenas puede ser bastante larga, y es posible que B solo esté interesado en el evento para poder transmitirlo. No quiero que A sepa sobre C, ya que eso rompería la encapsulación.
¿Qué es una buena práctica en esta situación? Centralizar los eventos, o sonreír y soportar y definir eventos en cada clase intermedia? ¿O cuáles son los criterios para tomar la decisión? ¡Gracias!
Editar: Here es otra pregunta que pregunta esencialmente lo mismo.
Gracias Jon, al instante útiles como siempre! Eso era lo que estaba buscando en este caso, salud. –
Una palabra de advertencia. Puede ser muy confuso cuando el valor "remitente" no es el objeto al que se suscribió. – Andreas