// Передаємо конструктору об'єкт MailManager public Fax(MailManager mm) { // Створюємо екземпляр делегату EventHandler<NewMailEventArgs>, який посилається на метод зворотнього виклику FaxMsg. // Реєструємо зворотній виклик для події NewMail об'єкту MailManager. mm.NewMail += FaxMsg; Console.WriteLine("Fax підписався на подію NewMail."); }
static void Main(string[] args) { MailManager mailManager = new MailManager(); // Підписуємось на події (реалізовано в конструкторі): Fax fax = new Fax(mailManager); Pager pager = new Pager(mailManager); // Отримуємо нове повідомлення на пошту: mailManager.SimulateNewMail("*****@*****.**", "*****@*****.**", "Ходімо гуляти!"); // Pager відписується від події: pager.Unregister(mailManager); // Отримуємо нове повідомлення на пошту: mailManager.SimulateNewMail("*****@*****.**", "*****@*****.**", "Чому не відповідаєш? Ну все, я піду один :("); }
// Цей метод може виконуватись для відміни реєстрації об'єкту Fax в якості одержувача сповіщень події NewMail. public void Unregister(MailManager mm) { // Відмінити реєстрацію на сповіщення про подію NewMail об'єкту MailManager. mm.NewMail -= PagerMsg; Console.WriteLine("Pager відписався від події NewMail."); }