![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 5 Всего: 13 |
Вопрос теоретический, поэтому не закидывайте меня кодом и ссылками, а просто объясните вкратцэ
Можно ли каким-нибудь образом повесить на любой метод событие, которое будет вызываться когда этот метод будет вызываться? -------------------- ![]() |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
Bogdan1024,
имеется ввиду возможность установить генерируемое событие для всех методов из одного места? или возможность генерирования события в любом гипотетически возможном методе? -------------------- СУВ, Partizan. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Такой возможности нет. Вот почему:
Генерировать событие до или после тела метода? Куда девать аргументы метода, передавать в событие или нет, создавать фрейм стека или нет (до или после)? Отменить вызов метода, если событие захочет этого? Как обрабатывать исключения в коде обработчика события? P.S. по сабжу было что-то по поводу контекстов, но было это давно и для .NET 1.0/1.1, уже не вспомню -------------------- ![]() |
|||
|
||||
| Bogdan1024 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 5 Всего: 13 |
Это было бы неплохо
Это интересует Я не знаю куда, может микрософтовцы знают Ведь мы же можем ставить брэйкпойнты где угодно в приложениях, даже в самом бинарнике (экзешнике). Может быть фрэймворк имеет методы, которые позволяют делать что-то подобное: дико контролировать исполнение приложения? Я не работал с MSIL-отладчиком. Просто мне кажется что когда что-то доходит до брэйкпойнта, то генерируется событие. Добавлено через 6 минут и 49 секунд Не, я понимаю что со стеком ничего не происходит на брэйкпойнтах. Но всё же... Можно ли просто следить за выполнением программы и создавать события при вызове некоторых методов в другой? -------------------- ![]() |
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Что позволено дебаггеру, то не позволено.... хмм... простому смертному У дебаггера есть PDB-файл с полной инфой об адресе каждого метода, вот он и рулит, и вообще дебаггер CLR не написан на c#/.net, а только подвид обычного сишного студийного дебаггера с его набором инструментов. У программера есть прямые руки и возможность воткнуть в начало нужного метода вызов статического метода а-ля MyEvent.Raise("message") и т.п. Добавлено через 1 минуту и 33 секунды см. "прямые руки" и так далее -------------------- ![]() |
|||
|
||||
| Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 5 Всего: 13 |
Всё ясно
-------------------- ![]() |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 5 Всего: 36 |
можно. смотреть в сторону Aspect.NET и других AOP-библиотек |
|||
|
||||
| jorikdima |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 18.1.2008 Где: Там, где Зенит Репутация: нет Всего: нет |
В Питере сделано |
||||
|
|||||
| Jamon |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 1.9.2007 Репутация: нет Всего: нет |
+1. Если вкратце - то аспекты помогают по определенному принципу выбрать методы, при всех вызовах которых нужно что-то делать. Ну, например вызывать метод логирования инфы - чтобы не писать однотипные строчки в n методах, можно написать аспект, который выберет методы и runtime впихнет нужный код. для лучшего понимания конечно юзайте документацию, но я когда заинтересовался - мне почему то лучше всего помогла статья про аспекты в php |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |