c#-温莎城堡拦截器和按公约注册
作者:互联网
我目前正在使用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>());
但是大概你会在其他地方注册(按照惯例).
标签:interceptor,castle-windsor,c 来源: https://codeday.me/bug/20191028/1951733.html