Возможно ли в C# подключить одно событие к другому, так что излучающее первое событие будет издавать второе? Единственный способ, который я вижу, - создать функцию заглушки, которая выдает второе событие и связывает первое событие с этой функцией. Компилятор не хотите подключить событие к событию или события к функции Anonymouse/лямбда, что вызывает еще одно событие:Подписаться на событие в 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 :(.
Может быть, это какой-то декоратор или некоторые черной магии, которая позволяет цепи событий без функций окурка?
. Введем связь - это говорит, что все это^_ ^. – grigoryvp
Это точно. Список обработчиков является частным для объекта, которому принадлежит событие, по дизайну. Причина в том, что только объект должен контролировать, когда и как вызываются обработчики. Это базовое инкапсулирование. Если вы хотите сломать инкапсуляцию, вам нужно предоставить специальный штрих для этого, и ваши классы должны знать об этом - следовательно, соединение. То, о чем вы просите, действительно ничем не отличается от «можно ли получить доступ к частной области одного из моих классов из другого?». –
Так что в основном все, что мне нужно сделать, это переместить код подписки в класс, которому принадлежит второе событие? :) – grigoryvp