| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Можно ли вешать событие на вызов любого метода? |
| Автор: Bogdan1024 5.11.2008, 20:21 |
| Вопрос теоретический, поэтому не закидывайте меня кодом и ссылками, а просто объясните вкратцэ Можно ли каким-нибудь образом повесить на любой метод событие, которое будет вызываться когда этот метод будет вызываться? |
| Автор: Partizan 5.11.2008, 20:33 |
| Bogdan1024, имеется ввиду возможность установить генерируемое событие для всех методов из одного места? или возможность генерирования события в любом гипотетически возможном методе? |
| Автор: mr.DUDA 5.11.2008, 20:40 |
| Такой возможности нет. Вот почему: Генерировать событие до или после тела метода? Куда девать аргументы метода, передавать в событие или нет, создавать фрейм стека или нет (до или после)? Отменить вызов метода, если событие захочет этого? Как обрабатывать исключения в коде обработчика события? P.S. по сабжу было что-то по поводу контекстов, но было это давно и для .NET 1.0/1.1, уже не вспомню |
| Автор: mr.DUDA 5.11.2008, 21:01 | ||||
Что позволено дебаггеру, то не позволено.... хмм... простому смертному У дебаггера есть PDB-файл с полной инфой об адресе каждого метода, вот он и рулит, и вообще дебаггер CLR не написан на c#/.net, а только подвид обычного сишного студийного дебаггера с его набором инструментов. У программера есть прямые руки и возможность воткнуть в начало нужного метода вызов статического метода а-ля MyEvent.Raise("message") и т.п. Добавлено через 1 минуту и 33 секунды
см. "прямые руки" и так далее |
| Автор: Bogdan1024 5.11.2008, 21:06 |
| Всё ясно |
| Автор: Rififi 5.11.2008, 21:13 | ||
можно. смотреть в сторону http://aspectdotnet.org/ и других AOP-библиотек |
| Автор: jorikdima 6.11.2008, 12:10 | ||||
В Питере сделано |
| Автор: Jamon 7.11.2008, 20:35 | ||||
+1. Если вкратце - то аспекты помогают по определенному принципу выбрать методы, при всех вызовах которых нужно что-то делать. Ну, например вызывать метод логирования инфы - чтобы не писать однотипные строчки в n методах, можно написать аспект, который выберет методы и runtime впихнет нужный код. для лучшего понимания конечно юзайте документацию, но я когда заинтересовался - мне почему то лучше всего помогла статья про аспекты в php |