C# Castle Windsor:仅应在解析期间调用SelectHandler?
我使用的是温莎城堡4.1.1。为了简单起见,我创建了演示来说明问题: 这是容器初始化:C# Castle Windsor:仅应在解析期间调用SelectHandler?,c#,inversion-of-control,castle-windsor,C#,Inversion Of Control,Castle Windsor,我使用的是温莎城堡4.1.1。为了简单起见,我创建了演示来说明问题: 这是容器初始化: using(var container = new WindsorContainer()) { container.Kernel.AddHandlerSelector(new HandlerSelector()); // Should not call handler selector container.Register(Component.For<IA>().Impl
using(var container = new WindsorContainer())
{
container.Kernel.AddHandlerSelector(new HandlerSelector());
// Should not call handler selector
container.Register(Component.For<IA>().ImplementedBy<AImpl>());
container.Register(Component.For<IB>().ImplementedBy<BImpl>());
// Should call handler selector
container.Resolve<IA>();
}
使用(var container=new WindsorContainer())
{
container.Kernel.AddHandlerSelector(newHandlerSelector());
//不应调用处理程序选择器
container.Register(Component.For()。由以下人员实现:
处理程序选择器允许您动态选择要满足的组件
请求的服务并覆盖Windsor的默认行为。这是
在多租户应用程序中特别有用
我希望这些函数应该只在解析期间调用,而不是在注册期间调用。(它们在解析和注册期间都会被调用。)
他们明确表示,它对多租户应用程序有用,所以在大多数情况下,租户是在解析过程中确定的,而不是在注册过程中确定的
我的假设正确吗?
您需要使用不同的生活方式(而不是默认的单身生活方式)如果您希望能够为不同的租户提供不同的组件实例。如果这些组件是为多租户应用程序注册的,则可以假定它们不会像您在这里所做的那样注册为Singleton。@PhilDegenhardt您是对的。我错过了。您能将其作为答案发布吗?