Перехват ВСЕХ зависимостей с помощью Castle Dynamic Proxy

Я использую перехватчик Castle Dynamic Proxy в своем коде (для ведения журнала). Я знаю, как установить перехватчик на зависимость, например:

      container.Register(Component.For<MyService>().
           Interceptors<LoggerInterceptor>());

Но как я могу установить этот перехватчик на ВСЕ мои зависимости?


person eitanby    schedule 22.08.2017    source источник


Ответы (2)


Прежде чем выполнять какую-либо регистрацию своих компонентов, вы можете добавить обработчик, который добавит ваш перехватчик к каждому компоненту:

        container.Kernel.ComponentRegistered += (key, handler) =>
        {
            handler.ComponentModel.Interceptors.Add(new InterceptorReference(typeof(LoggingInterceptor)));
        };
person Phil Degenhardt    schedule 23.08.2017
comment
Это помогло? - person Phil Degenhardt; 16.09.2017

Используйте регистрацию конвенции:

container.Register(Classes.FromThisAssembly()
                          .Pick()
                          .WithService.Self()
                          .Configure(r => r.Interceptors<LoggerInterceptor>()));
person Jan Muncinsky    schedule 22.08.2017
comment
Я не хочу этого делать, потому что я уже зарегистрировал все свои зависимости. Кроме того, я зарегистрировал разные зависимости по-разному (некоторые из них синглтоны, некоторые из них переходные, некоторые из них с именами и т. д.), поэтому я не хочу использовать соглашение и потерять всю свою работу здесь. - person eitanby; 23.08.2017