// Обработчик события public void Handler_3(object source, NewsEventArgs arg) { if ((arg.Message == "WEATHER") || (arg.Message == "SPORT")) { Console.WriteLine($"Подписчик\0{this.GetType().Name}\0 получил уведомление о новом событии" + $" из категории <<{arg.Message}>>>\n"); } }
public MyClass() { // Создание обьекта класса-издателя NewsOperator sourceEvent = new NewsOperator(); // Создание обьектов классов-подписчиков Subscriber_1 s1 = new Subscriber_1(); Subscriber_2 s2 = new Subscriber_2(); Subscriber_3 s3 = new Subscriber_3(); // Подписка обьектов классов-подписчиков на события sourceEvent.SomeNewsEvent += new NewsEventHandler(s1.Handler_1); sourceEvent.SomeNewsEvent += new NewsEventHandler(s2.Handler_2); sourceEvent.SomeNewsEvent += new NewsEventHandler(s3.Handler_3); // Активизация процесса рассылки уведомлений о NewsEventArgs arg_news = new NewsEventArgs("NEWS"); sourceEvent.InvokeEvent(arg_news); NewsEventArgs arg_sport = new NewsEventArgs("SPORT"); sourceEvent.InvokeEvent(arg_sport); NewsEventArgs arg_humor = new NewsEventArgs("HUMOR"); sourceEvent.InvokeEvent(arg_humor); NewsEventArgs arg_accid = new NewsEventArgs("ACCIDENTS"); sourceEvent.InvokeEvent(arg_accid); NewsEventArgs arg_weather = new NewsEventArgs("WEATHER"); sourceEvent.InvokeEvent(arg_weather); }
// Метод, инициирующий рассылку сообщения о наступлении определенной категории события всем, кто на нее подписан public void InvokeEvent(NewsEventArgs arg) { SomeNewsEvent?.Invoke(this, arg); }