Будьте уведомлены относительно вызовов метода в.NET

Я хочу быть уведомленным каждый раз, когда определенный метод назвали. Я надеялся, что мог выполнить это Отражение использования, но мои попытки не получили меня нигде. Как я могу быть уведомлен?

Я изобразил использование MethodInfo путь состоял в том, чтобы пойти, но как я сказал, я не нашел ничего там, которое могло помочь мне выполнить то, что я хотел сделать.

Я не могу изменить метод или украсить его атрибутами или чем-либо. Если бы я мог бы сделать что-то как этот, я не должен был бы делать этого, я мог просто изменить сам метод.

6
задан Alex 4 June 2010 в 11:16
поделиться

4 ответа

Отражение - половина решения. Вам необходимо обернуть наблюдаемые объекты, чтобы перехватить вызовы методов. Обычно это делается с помощью удаленных прокси-объектов.

В Enterprise Library есть блок Unity Interception, который делает именно то, что вы хотите. Также вы можете изучить DynamicProxy фреймворка Castle, который дает вам чрезвычайно полный контроль над этим процессом перехвата.

Поиск в Google по аспектно-ориентированному программированию даст вам больше информации.

0
ответ дан 10 December 2019 в 02:43
поделиться

Я считаю, что единственный способ сделать это - либо переписать тело метода так, чтобы он уведомлял вас, когда метод был вызван, либо использовать API профилирования CLR.

Первый способ может быть реализован с помощью фреймворка АОП. Вы можете использовать Postsharp (который был превращен в коммерческий продукт) для достижения этого с помощью OnMethodBoundaryAspect. Вот пример: Наследуйте класс от OnMethodBoundaryAspect

2
ответ дан 10 December 2019 в 02:43
поделиться

вы можете использовать методы расширения

, чтобы вы могли использовать разные атрибуты и изменять все до или после фактического метода

-1
ответ дан 10 December 2019 в 02:43
поделиться

Рассматривали ли вы АОП (аспектно-ориентированное программирование)? Что-то вроде PostSharp .

8
ответ дан 10 December 2019 в 02:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: