¿Es posible en C# conectar un evento a otro, por lo que la emisión del primer evento emitirá el segundo? La única forma en que puedo ver es crear una función de stub que emitirá un segundo evento y conectar el primer evento a esta función. Compilador no quieren conectar un evento a otro o evento a la función anonymouse/lambda que llama a otro evento:¿Suscribirse evento al evento en C#?
class Ui { public event EventHandler OnClick; }
class Logic { public event EventHandler OnExit; }
var ui = new Ui();
var logic = new Logic();
ui.OnClick += logic.OnExit; // Not working.
ui.OnClick += (a, b) => logic.OnExit; // Not working either :(.
Tal vez sea un poco decorador, o un poco de magia negro que permite a eventos de la cadena sin funciones del trozo?
Este acoplamiento de introducción - que dice que es todo^_ ^. – grigoryvp
Ese es precisamente el punto. La lista de manejadores es privada para el objeto que posee el evento, por diseño. La razón es que solo el objeto debe controlar cuándo y cómo se invocan los controladores. Es una encapsulación básica. Si desea romper la encapsulación, deberá proporcionarle una eclosión especial, y sus clases deben ser conscientes de ello, de ahí el acoplamiento. Lo que estás pidiendo realmente no es diferente de "¿puedo acceder al campo privado de una de mis clases de otra?". –
Entonces, básicamente, todo lo que tengo que hacer es mover el código de suscripción a una clase que posee el segundo evento? :) – grigoryvp