c# - CaSTLe Windsor 拦截器和按约定注册

标签 c# castle-windsor interceptor

我目前正在使用 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>());

但大概您会在其他地方注册(按照惯例)。

关于c# - CaSTLe Windsor 拦截器和按约定注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30189690/

相关文章:

c# - ASP.NET 项目中的传递性 SDK 项目引用

wcf - 工厂被废弃,不能再使用。 NHibernate设施

rest - Spring Rest API 拦截器在每个/每个请求上添加响应 header

c# - 为什么在Visual Studio中默认情况下警告CS0108和CS0114 * NOT *错误?

c# - 如何调用 IEnumerable 函数

c# - CaSTLe windsor 3.0 和 ASP.NET MVC Controller

c# - 使用 CaSTLe Windsor 的 WCF 依赖注入(inject) - 请帮忙?

java - 如何获取struts2拦截器中struts.action.extension的值?

c# - 为什么 Windsor 只能拦截虚拟或接口(interface)方法?

c# - 解决方案中的多个项目 : Interface naming convention