繁体   English   中英

城堡温莎拦截器和按公约登记

[英]Castle Windsor Interceptors and Registering by Convention

我目前正在使用Castle Windsor来管理我的应用程序的依赖项。

我目前正在使用Classes.FromAssemblyContaining来注册给定类型IFoo<>所有组件,并希望为所有这些类注册一个拦截器。

当我注册这样的单个组件时,我可以让拦截器工作:

public void SetUpContainer(IWindsorContainer container)
{
    container.Register(Component.For<IFoo>()
                                .ImplementedBy<Foo>()
                                .LifestyleSingleton().Interceptors<MyIntercepter>());
}

但是,我想继续按照惯例使用Classes.FromAssembly进行注册。 我的注册码目前看起来像这样:

public void SetUpContainer(IWindsorContainer container)
{
     container.Register(Classes.FromAssemblyContaining<Foo>()
                               .BasedOn(typeof(IFoo<>))
                               .WithService.Base());
}

如何为所有已注册的IFoo<>添加拦截器?

您只需使用Configure方法添加拦截器:

public void SetUpContainer(IWindsorContainer container)
{
    container.Register(Classes.FromAssemblyContaining<Foo>()
                              .BasedOn(typeof(IFoo<>))
                              .WithService.Base()
                              .Configure(r => r.Interceptors<FooInterceptor>()));
}

我还需要注册拦截器:

container.Register(Component.For<FooInterceptor>());

但据推测,你会在其他地方注册(按照惯例)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM