Как реализовать атрибуты postsharp в качестве интерфейсов

1

У меня есть простой атрибут обработки исключений. Проблема заключается в том, что мы используем этот атрибут в общем проекте и создаем зависимость от всех наших проектов. Как мы можем удалить зависимость Postsharp от общего проекта и ввести Postharp с помощью Autofac.

  • Наша цель - легко обновить пакеты Nuget от корневого проекта
Теги:
dependency-injection
autofac
aop
postsharp

1 ответ

0

Скорее всего, использование Autofac не применимо.

Если вы применяете аспекты с использованием атрибутов, вам понадобится ссылка PostSharp.dll, потому что она определяет базовые классы вашего аспекта.

Но вы можете добавлять аспекты, используя файл конфигурации xml на уровне проекта:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.postsharp.org/1.0/configuration"
         xmlns:m="clr-namespace:MyAspectLibrary;assembly:MyAspectLibrary">
  <Multicast>
    <m:MyAspect AttributeTargetTypes="MyProject.Class1" AttributeTargetMembers="Method1" />
  </Multicast>
</Project>

Файл должен иметь то же имя и должен быть помещен в ту же папку, что и файл csproj с расширением psproj (здесь MyProject.psproj).

В этом случае вы можете удалить ссылку на PostSharp.dll из MyProject. Он должен по-прежнему ссылаться на MyAspectLibrary.

Изменение: обратите внимание, что MyProject по-прежнему обрабатывается PostSharp. См. PostSharp.targets и связанные строки в файле csproj.

  • 0
    Скорее всего, невозможно применить аспекты с использованием Autofac. : ((

Ещё вопросы

Сообщество Overcoder
Наверх
Меню