Я довольно новичок в Castle Windsor и, в частности, с помощью Interceptors, и мне интересно, можно ли зарегистрировать Interceptor во всех реализациях определенного интерфейса, не указав каждую реализацию в свою очередь , Например, у меня есть интерфейс под названием IComponent
, который будет реализован рядом классов. У меня есть класс ComponentInterceptor
, написанный для работы над этими классами, когда он выполнил конкретный метод. Я хотел бы сделать что-то вроде:Регистрация перехватчика для всех интерфейсов Реализация в Castle Windsor
_container.Register(
Component.For<IComponent>()
.Interceptors("ComponentInterceptor")
.LifestyleSingleton())
Вместо того, чтобы сделать:
_container.Register(
Component.For<IComponent>()
.ImplementedBy<ComponentA>()
.Interceptors("ComponentInterceptor")
.LifestyleSingleton()),
_container.Register(
Component.For<IComponent>()
.ImplementedBy<ComponentB>()
.Interceptors("ComponentInterceptor")
.LifestyleSingleton())
вкладчиком другой подход. Хотя вы не должны получать обработчики и добавлять такого перехватчика, как вызывающий вкладчик, когда регистрируется каждый компонент. Вы должны только модифицировать предоставленную «модель», иначе ваши компоненты получат несколько экземпляров перехватчика. Я обновил ваш ответ, чтобы отразить это. –