我有两个实现相同界面的搜索服务。其中一个用于仅搜索一小部分内部Umbraco内容,另一个搜索Umbraco和外部内容,并使用默认搜索引擎以外的其他内容。我想保留它们中的每一个,因为它们每个都表现良好,因为它使用的是一组数据。
Simple Injector是否可以指定何时注入哪些服务?我想为大多数控制器注册第一个,基本上作为默认实现。然后,我需要为两个特定的控制器注册第二个。
在浏览时我找到了解决这个问题的方法,但它在Ninject中:
Bind<ITeamRespository>().To<SoccerRepository>().WhenInjectedInto(typeof(SoccerController));
使用Simple Injector可以做同样的事吗?
答案 0 :(得分:4)
Simple Injector等效于:
container.RegisterConditional<ITeamRespository, SoccerRepository>(
c => c.Consumer.ImplementationType == typeof(SoccerController));
container.RegisterConditional<ITeamRespository, FallbackRepository>(c => !c.Handled);
更多信息可在documentation。
中找到