Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Классы receiver
Мы построим два класса, объекты которых способны получать и обрабатывать событие Changed. Получать они будут одно и то же сообщение, а обрабатывать его будут по-разному. В нашей модельной задаче различие обработчиков сведется к выдаче разных сообщений. Поэтому достаточно разобраться с устройством одного класса, названного EventReceiver1. Вот его код: class EventReceiver1{ private ListWithChangedEvent List; public EventReceiver1(ListWithChangedEvent list) { List = list; // Присоединяет обработчик к событию. OnConnect(); } //Обработчик события - выдает сообщение. //Разрешает добавление элементов, меньших 10. private void ListChanged(object sender, ChangedEventArgs args) { Console.WriteLine(" EventReceiver1: Сообщаю об изменениях: " + " Item ={0}", args.Item); args.Permit = ((int)args.Item < 10); } public void OnConnect() { //Присоединяет обработчик к событию List.Changed += new ChangedEventHandler(ListChanged); } public void OffConnect() { //Отсоединяет обработчик от события и удаляет список List.Changed -= new ChangedEventHandler(ListChanged); List = null; }}//class EventReceiver1Дам краткие комментарии.
Класс Receiver2 устроен аналогично. Приведу его текст уже без всяких комментариев: class Receiver2{ private ListWithChangedEvent List; public Receiver2(ListWithChangedEvent list) { List = list; // Присоединяет обработчик к событию. OnConnect(); } // Обработчик события - выдает сообщение. //Разрешает добавление элементов, меньших 20. private void ListChanged(object sender, ChangedEventArgs args) { Console.WriteLine(" Receiver2: Сообщаю об изменениях: " + " Объект класса {0}: " + " Item ={1}", sender.GetType(), args.Item); args.Permit = ((int)args.Item < 20); } public void OnConnect() { //Присоединяет обработчик к событию List.Changed += new ChangedEventHandler(ListChanged); //Заметьте, допустимо только присоединение (+=), //но не замена (=) //List.Changed = new ChangedEventHandler(ListChanged); } public void OffConnect() { //Отсоединяет обработчик от события и удаляет список List.Changed -= new ChangedEventHandler(ListChanged); List = null; }}//class Receiver2Классы созданы, теперь осталось создать объекты и заставить их взаимодействовать, чтобы одни создавали события, а другие их обрабатывали. Эту часть работы будет выполнять тестирующая процедура класса Testing: В заключение взгляните на результаты работы этой процедуры.
|