简单注入器-将接口的特定实现注入到特定控制器

本文关键字:实现 控制器 注入 注入器 接口 简单 | 更新日期: 2023-09-27 18:22:10

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

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

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

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

Simple Injector也能做到这一点吗?

简单注入器-将接口的特定实现注入到特定控制器

简单注射器等效为:

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

更多信息可以在文档中找到。