Skip to content
Igor Polyakov edited this page Mar 19, 2018 · 14 revisions

Введение

Это основная страница документации с общими словами по библиотеке. Для получения детальной информации по конкретной функциональности - посмотрите оглавление справа. Ответ на вопрос "Зачем эта библиотека нужна?" находится в README. Пример работы с библиотекой представлен в тестовом проекте.

Быстрый старт

  1. Установите основной пакет библиотеки;
  2. Установите один из вспомогательных пакетов для интеграции со сторонними DI фрейморками (Castle, Simple Injector);
  3. Сконфигурируйте библиотеку, например как в тестовом примере;
  4. Напишите свои аспекты и примените их на интерфейсы компонентов.
  5. Проверьте корректность работы аспекта, установив точку останова в тело обработчика (совета) созданного аспекта. Подробнее о том, в какой момент вызовется тот или иной обработчик можно узнать тут.

Что реализовано

  • Аспект уровня интерфейса и методов интерфейса для внедрения советов в точках после и перед фактическим выполнением метода (MethodBoundaryAspect);
  • Аспект уровня методов интерфейса для перехвата вызова метода объекта (MethodInterceptionAspect);
  • Интеграция c фреймворком SimpleInjector;
  • Интеграция с фреймворком CastleWindsor;
  • Внедрение зависимостей в аспекты;
  • Возможность использования нескольких аспектах на методах;
  • Возможность задания приоритетов аспектам;
  • Возможность гибкого управления пайплайном вызова внутри аспекта;
  • Возможность передавать состояние внутри аспекта;
  • Поддержка API NET Standard 2.0

Что ещё не реализовано

  • Корректная обработка асинхронных методов и методов возвращающих awaitable типы (Task, ValueTask);

Что реализовано не будет

  • Внедрение аспектов в классы, свойства, конструкторы, события и прочее.