C# 温莎城堡拦截器和公约注册
我目前正在使用Castle Windsor管理我的应用程序的依赖项 我目前正在使用C# 温莎城堡拦截器和公约注册,c#,castle-windsor,interceptor,C#,Castle Windsor,Interceptor,我目前正在使用Castle Windsor管理我的应用程序的依赖项 我目前正在使用类。fromsassemblycontaining注册给定类型的所有组件IFoo,并希望为所有这些类注册一个拦截器 当我注册单个组件时,我可以让拦截器工作,如下所示: public void SetUpContainer(IWindsorContainer container) { container.Register(Component.For<IFoo>()
类。fromsassemblycontaining
注册给定类型的所有组件IFoo
,并希望为所有这些类注册一个拦截器
当我注册单个组件时,我可以让拦截器工作,如下所示:
public void SetUpContainer(IWindsorContainer container)
{
container.Register(Component.For<IFoo>()
.ImplementedBy<Foo>()
.LifestyleSingleton().Interceptors<MyIntercepter>());
}
public void SetUpContainer(IWindsorContainer container)
{
container.Register(Classes.FromAssemblyContaining<Foo>()
.BasedOn(typeof(IFoo<>))
.WithService.Base());
}
public void SetUpContainer(IWindsorContainer)
{
container.Register(Component.For())
.由()实施
.LifestyleSingleton().Interceptors());
}
但是,我希望继续使用Classes.fromsassembly按约定注册。我的注册码当前看起来像这样:
public void SetUpContainer(IWindsorContainer container)
{
container.Register(Component.For<IFoo>()
.ImplementedBy<Foo>()
.LifestyleSingleton().Interceptors<MyIntercepter>());
}
public void SetUpContainer(IWindsorContainer container)
{
container.Register(Classes.FromAssemblyContaining<Foo>()
.BasedOn(typeof(IFoo<>))
.WithService.Base());
}
public void SetUpContainer(IWindsorContainer)
{
container.Register(Classes.FromAssemblyContaining()
.BasedOn(类型(IFoo))
.with.service.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>());
public void SetUpContainer(IWindsorContainer)
{
container.Register(Classes.FromAssemblyContaining()
.BasedOn(类型(IFoo))
.WithService.Base()
.Configure(r=>r.Interceptors());
}
我还需要注册拦截器:
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>());
container.Register(Component.For());
但你可能会在其他地方注册(按照惯例)