使用Castle Dynamic Proxy拦截所有依赖项

时间:2017-08-22 14:53:58

标签: c# inversion-of-control castle-windsor interceptor castle-dynamicproxy

我在我的代码中使用Castle Dynamic Proxy拦截器(用于记录目的)。我知道如何在依赖项上设置拦截器,如:

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

但是如何将此拦截器设置为 ALL 我的依赖项?

2 个答案:

答案 0 :(得分:2)

在对组件进行任何注册之前,您可以添加一个处理程序,将拦截器添加到每个组件:

        container.Kernel.ComponentRegistered += (key, handler) =>
        {
            handler.ComponentModel.Interceptors.Add(new InterceptorReference(typeof(LoggingInterceptor)));
        };

答案 1 :(得分:1)

使用会议注册:

container.Register(Classes.FromThisAssembly()
                          .Pick()
                          .WithService.Self()
                          .Configure(r => r.Interceptors<LoggerInterceptor>()));