【问题标题】:Intercept ALL dependencies with Castle Dynamic Proxy使用 Castle Dynamic Proxy 拦截所有依赖项
【发布时间】:2018-01-30 22:28:39
【问题描述】:

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

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

但是我怎样才能将此拦截器设置为 ALL 我的依赖项?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 这有帮助吗?
    【解决方案2】:

    使用约定注册:

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

    【讨论】:

    • 我不想这样做,因为我已经注册了所有依赖项。我还以不同的方式注册了不同的依赖项(其中一些是单例的,一些是瞬态的,一些是带有名称的等等),所以我不想在这里使用约定并松散我所有的工作。
    猜你喜欢
    • 2011-10-03
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 2011-10-01
    • 1970-01-01
    • 2014-08-22
    • 2018-02-05
    相关资源
    最近更新 更多