![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Допустим, у нас есть класс с определённым в нём внешним методом :
Можно ли в унаследованном от А классе сделать событие, возникающее на Invoke метода Method? Это сообщение отредактировал(а) marcusmae - 24.8.2006, 19:26 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Если только вызывать Method из другого метода, который в свою очередь генерит некое событие. А чтобы никто не смог добраться извне до метода Method, можно завернуть его во вложенный класс с модификатором private.
-------------------- ![]() |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
В том-то и дело, что метод должен быть public, и при его вызове должно возникать событие.
Я немного полазил по System.Reflection.Emit.* и выяснил, что можно динамически изменять тела методов и много ещё чего крутить (в моём случае, наверно, можно было бы тело метода сбросить в новый, а на его месте генерить событие или как-то иначе). В общем, потрясающе. Только примеров использования из MSDN недостаточно, и я подумал, может, кто-то хорошо владеет этим. Это сообщение отредактировал(а) marcusmae - 24.8.2006, 23:33 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
marcusmae, Дуда имеет ввиду такую штуку:
Это сообщение отредактировал(а) ivashkanet - 25.8.2006, 09:14 |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Обнаружил несколько более рутинный, но вместе с тем и более органичный способ. Он заключается в переопределении GetType() и возврате из него класса, унаследованного от Type, в котором событие можно создавать в вызове метода InvokeMember:
Это сообщение отредактировал(а) marcusmae - 30.8.2006, 15:53 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |