tantal
|
||||||
1 | ||||||
Имеется базовый класс с некоторым событием, как вызвать это событие в дочернем классе?24.05.2009, 14:08. Показов 4746. Ответов 2
Метки нет (Все метки)
Братцы, что то я отморозился, помогите разобраться с концепцией...
Суть проблемы, имеется базовый класс с некоторым событием, как вызвать это событие в дочернем классе?
|
24.05.2009, 14:08 | |
Ответы с готовыми решениями:
2
Вызов виртуальной функции, определённой в дочернем классе, через указатель на базовый класс Android studio как вызвать вложенный класс в дочернем фрагменте Не могу в дочернем классе вызвать protected метод Получить родительский класс в дочернем классе |
5 / 5 / 1
Регистрация: 01.10.2008
Сообщений: 85
|
||||||
24.05.2009, 15:12 | 2 | |||||
События можно вызывать только из того класса, в котором оно объявлено. Чтобы вызывать из ихз производных классов, применяются специальные схемы.
Типовая схема с событиями такая: 1) Во-первых, событие должно называться не OnSystemException, а просто SystemException (это не требование и не синтаксис, просто соглашение; поверьте мне, если следовать такого рода соглашениям, становится гораздо легче) 2) Соответствующий делегат называется SystemExceptionEventHandler, и объявлен должен быть вне класса. 3) Событие должно иметь два аргумента: object sender, SystemExceptionEventArgs arguments. А уже класс SystemExceptionEventArgs содержит все необходимые параметры. Поверьте мне, это только на первый взгляд кажется громоздким и неудобным. Позже вы оцените. 3) Кроме события, базовый класс должен содержать protected, virtual метод, называющийся OnSystemException, который только и делает, что вызывает это событие. Выигрыш такой: 1) Производный класс может принудительно вызывать событие, просто вызывая этот protected-метод. 2) Производный класс может перекрыть этот метод, если он хочет реагировать на событие (в самом деле, не вешаться же на свое собственное событие!) 3) Производный класс (опять же перекрыв метод) может вообще запретить или как-то ограничить возникновение этого события. 4) Стандартизация, читаемость кода и все такое В вашем случае так:
0
|
tantal
|
|
24.05.2009, 15:53 | 3 |
Огромное спасибо за расширенный и полный ответ...
Действительно потратил много времени на поиски данной темы на MSDN и в других источниках... Успехов tantal |
24.05.2009, 15:53 | |
24.05.2009, 15:53 | |
Помогаю со студенческими работами здесь
3
У меня класс B в классе A, а в классе B рекурсивная функция переопределения оператора "()", как её вызвать, не создавая явно объект класса B? Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе Класс: Как обработать событие последнего объекта в форме, не создавая в классе объекта промежуточное событие? Указатели в базовом классе на базовый класс и производный класс Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |