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

时间:2015-11-17 11:54:01

标签: c# dependency-injection umbraco simple-injector

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

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

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

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

使用Simple Injector可以做同样的事吗?

1 个答案:

答案 0 :(得分:4)

Simple Injector等效于:

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

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

更多信息可在documentation

中找到