Simple Injector - 将接口的特定实现注入到特定控制器

Simple Injector - Inject specific implementation of interface to specific controller

我有两个实现相同接口的搜索服务。其中一个用于仅在一小组内部 Umbraco 内容中搜索,另一个搜索 Umbraco 和外部内容并使用默认搜索引擎之外的其他内容。我想保留它们,因为它们每个都表现良好,用于它使用的数据集。

是否可以在Simple Injector 中指定何时注入哪个服务?我想为大多数控制器注册第一个,基本上作为默认实现。然后,我只需要为两个特定的控制器注册第二个。

在浏览时我找到了这个问题的解决方案,但它在 Ninject:

Bind<ITeamRespository>().To<SoccerRepository>().WhenInjectedInto(typeof(SoccerController));

Simple Injector 也可以做同样的事情吗?

Simple Injector 等价物是:

container.RegisterConditional<ITeamRespository, SoccerRepository>(
    c => c.Consumer.ImplementationType == typeof(SoccerController));

container.RegisterConditional<ITeamRespository, FallbackRepository>(c => !c.Handled);

可以在 documentation 中找到更多信息。