Есть ли у Strucutremap возможности перехвата, зачем мне для этого нужна другая библиотека, например Виндзорский замок?
У Strucutremap есть возможности перехвата, зачем мне для этого нужна еще одна библиотека, например, Виндзорский замок? Есть ли родной способ из Structuremap сделать это?
Ведение журнала AOP с помощью StructureMap - это аналогичный вопрос, но ответ остается за прокси-замком.
Спасибо
1 ответ
Документация отвечает на это:
В StructureMap 2.5+ добавлена возможность постобработки или даже перехвата и замены создаваемых объектов. Хотя StructureMap никогда не будет включать собственную модель аспектно-ориентированного программирования (миру не нужна новая), методы перехвата, показанные ниже, можно использовать для применения AOP времени выполнения из существующих инструментов AOP, таких как блок приложения внедрения политики от Microsoft.
В общем, перехват указывается тремя способами:
1)
OnCreation()
- регистрирует действие для запуска нового объекта после создания2)
EnrichWith()
- Регистрирует Func, который запускается против нового объекта после создания и дает вам возможность вернуть объект, отличный от исходного объекта.3) Пользовательский класс, который реализует
TypeInterceptor
интерфейс (модель времени выполнения всех методов перехвата)
Короче говоря, возможности перехвата StructureMap связаны с манипулированием / заменой сконфигурированных объектов в контейнере - без применения перехвата в стиле AOP.
Итак, подведем итог:
Имеет ли Strucutremap возможности перехвата
Да, но не для перехвата в стиле АОП
Зачем мне нужна еще одна библиотека, например Виндзорский замок?
Потому что AOP не входит в сферу применения архитектуры StructureMap. Уже есть несколько хороших решений (в том числе Castle Proxy).