, включающей событие. Так и поступим: //Методы класса: процедура On и переопределяемые методы. //Процедура On, включающая событие protected virtual void OnChanged(ChangedEventArgs args) { if (Changed != null) Changed(this, args); } Процедура OnChanged полностью соответствует ранее описанному образцу, поэтому не требует дополнительных комментариев. Наш класс, являясь наследником класса ArrayList, наследует все его методы. Переопределим методы, изменяющие элементы: - метод Add, добавляющий новый элемент в конец списка;
- индексатор this, дающий доступ к элементу списка по индексу;
- метод Clear, производящий чистку списка.
//Переопределяемые методы, вызывающие событие Changed //Добавление нового элемента //при получении разрешения у обработчиков события public override int Add(object value) { int i=0; evargs.Item = value; OnChanged(evargs); if (evargs.Permit) i = base.Add(value); else Console.WriteLine("Добавление элемента запрещено." + "Значение = {0}", value); return i; } public override void Clear() { evargs.Item=0; OnChanged(evargs); base.Clear(); } public override object this[int index] { set { evargs.Item = value; OnChanged(evargs); if (evargs.Permit) base[index] = value; else Console.WriteLine("Замена элемента запрещена." + " Значение = {0}", value); |