我目前正在使用 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/