Как обернуть метод через атрибуты? - PullRequest
12 голосов
/ 05 февраля 2010

Мне интересно, возможно ли обернуть метод, только добавив атрибут.

Пример: я хочу записать время выполнения метода.

[LogTimings]
public void work()
{
  ..
}

Это своего рода обертывание метода в другой ( см. Эту реализацию Python ).

Ответы [ 5 ]

8 голосов
/ 05 февраля 2010

АОП возможно в .NET. Вот статья об этом. А вот список AOP-фреймворков для .NET.

4 голосов
/ 05 февраля 2010

Взгляните на PostSharp , AOP-фреймворк для .NET.

С точки зрения ведения журнала и времени, существует также структура под названием Gibraltar , которая интегрируется с PostSharp и которая облегчает сбор и использование результатов. Я продолжаю пытаться попробовать ...

1 голос
/ 05 февраля 2010

Используя только стандартную библиотеку фреймворка .NET, вам придется создать функциональность переноса, исходя из System.Runtime.Remoting.Proxies.RealProxy.

Эту функциональность вы затем можете применить к своему классу, но этот класс должен быть производным от System.MarshalByRefObject.

Это довольно строгое ограничение, поэтому вы можете посмотреть на сторонние компоненты, такие как PostSharp.

1 голос
/ 05 февраля 2010
1 голос
/ 05 февраля 2010

Вы можете сделать это без необходимости использовать другой компилятор, если вы используете PostSharp .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...