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

Intercept ALL dependencies with Castle Dynamic Proxy

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

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

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

使用约定注册:

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

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

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