编程语言
首页 > 编程语言> > c#-简单注入器-将接口的特定实现注入到特定控制器

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

作者:互联网

我有两个实现相同接口的搜索服务.其中一个仅用于搜索一小组内部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);

可以在documentation中找到更多信息.

标签:dependency-injection,umbraco,c,simple-injector
来源: https://codeday.me/bug/20191027/1946268.html