C# Castle Windsor:仅应在解析期间调用SelectHandler?

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

我使用的是温莎城堡4.1.1。为了简单起见,我创建了演示来说明问题:

这是容器初始化:

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您是对的。我错过了。您能将其作为答案发布吗?