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

У нас есть этот шаблон везде в нашем коде:

using (ServiceAccess ws = new ServiceAccess())
{
//...
//code here to talk to webservice ws
//...
}

Как я могу заменить этот код котельной плиты атрибутом на функциях, которые должны общаться с веб-сервисом? (Я вспоминаю, когда давным-давно делал что-то с Hibernate в Java, и вы могли использовать некоторую аннотацию «Transation», которая автоматически вставляла бы некоторую попытку… поймать код в таблицу .) Использование {} уже довольно хорошо, но было бы неплохо его вообще не иметь ... Наличие атрибута также помогло бы документировать функцию как функцию, которая взаимодействует с веб-службой, в отличие от функции, которая делает это.

Редактировать: АОП справится?

Ответы [ 4 ]

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

Взгляните на аспекты в spring.net.

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

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

0 голосов
/ 06 февраля 2009

Вещи типа «Аспект» ... это способ украсить данный метод кодом по вашему выбору. Если вы хотите избавиться, например, после вызова вашего метода как аспект, так и код должны будут иметь доступ к Сервису. Это также означает, что у вас мало контроля над временем жизни класса обслуживания.

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

DateTime serverTime;
context.UseService<IInfoService>(s=>serverTime = s.GetTime());
0 голосов
/ 05 февраля 2009

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

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