代码之家  ›  专栏  ›  技术社区  ›  Eitan

使用Castle动态代理拦截所有依赖项

  •  1
  • Eitan  · 技术社区  · 7 年前

    我在代码中使用Castle动态代理拦截器(用于日志记录)。我知道如何在依赖项上设置拦截器,如下所示:

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

    我的依赖关系?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Phil Degenhardt    7 年前

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

            container.Kernel.ComponentRegistered += (key, handler) =>
            {
                handler.ComponentModel.Interceptors.Add(new InterceptorReference(typeof(LoggingInterceptor)));
            };
    
        2
  •  1
  •   Jan Muncinsky    7 年前

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