我有两个实现相同接口(interface)的搜索服务。其中一个用于仅在一小组内部 Umbraco 内容中搜索,另一个搜索 Umbraco 和外部内容并使用默认搜索引擎之外的其他内容。我想保留它们,因为它们每个都表现良好,用于它使用的数据集。
是否可以在 Simple Injector 中指定何时注入(inject)哪个服务?我想为大多数 Controller 注册第一个,基本上作为默认实现。然后,我只需要为两个特定的 Controller 注册第二个。
在浏览时我找到了这个问题的解决方案,但它在 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 中找到.
关于c# - Simple Injector - 将接口(interface)的特定实现注入(inject)到特定 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33756257/