c# - Simple Injector - 将接口(interface)的特定实现注入(inject)到特定 Controller

标签 c# dependency-injection umbraco simple-injector

我有两个实现相同接口(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/

相关文章:

android - 构造函数 vs 字段 vs 方法注入(inject) Dagger 2

visual-studio-2012 - Visual Studio 2012 : MVC, Umbraco 站点在调试时速度极慢

c# - 传入字典的模型项是 'Umbraco.Web.Models.RenderModel' 类型的,但是这个字典需要一个 'TestModel' 类型的模型项

xslt - 从最后一个元素中删除逗号

c# - 如何重构我的 LinqToSql 以使其更易于维护?

c# - 使用 CaSTLe ActiveRecord 插入多行并忽略任何重复项的推荐方法

c# - ASP.NET MVC 5/C# Foreach 循环 - 重复相同的数据

c# - 在显示其他表单时禁用完整表单

c# - Autofac:如何在依赖于另一个对象函数输出的类上使用构造注入(inject)

c# - 使用 DI 在 WPF 应用程序中使用 WCF 服务的正确方法