我有一个设施需要注册一个拦截器,然后针对已经在容器 Castle Kernel 中注册的组件子集注册这个拦截器。
该设施位于一个单独的程序集中,它旨在用于不同的程序集,因此我无法将拦截器注册与使用该设施的每个程序集的组件注册结合起来。
是否有可能做到这一点?我怎样才能实现这个功能?
我有一个设施需要注册一个拦截器,然后针对已经在容器 Castle Kernel 中注册的组件子集注册这个拦截器。
该设施位于一个单独的程序集中,它旨在用于不同的程序集,因此我无法将拦截器注册与使用该设施的每个程序集的组件注册结合起来。
是否有可能做到这一点?我怎样才能实现这个功能?
通常我使用设施的方式是这样的:
// 1. create the container
var container = new WindsorContainer();
// 2. add all the facilities I need
container.AddFacility<SomeFacility>();
contianer.AddFacility<SomeOtherFacility>();
// 3. install all the components
container.Install(FromAssembly.This());
这些设施通常要么订阅容器事件,注册一些他们自己的组件,要么添加ComponentModel
构造贡献者来检查和增加ComponentModel
正在注册的组件。
这样它就可以对组件完全透明,并强加组件和设施之间的显式耦合(除非你想要它)。