[英]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.