AutoFac / Unity容器-具有多种实现的依赖注入

问题描述

我将为ASP.NET Web API项目使用依赖注入。

我了解构造函数依赖注入的工作原理,但是我无法解决如何使注入器在同一接口的两个实现之间进行选择。让我们举一个例子,我们有一个这样的接口:

public interface ISender
{
    void Send();
    void AddReceipment(User user);
}

然后可以说,我使用相同的SmsSender接口对此MailSenderISender进行了两种实现。

现在我有两个API控制器,可以将它们称为“ MailController”和“ SmsController”。

现在,我希望依赖注入器通过类ISender的实现将MailSender注入MailController,在SmsController中,我也希望注入ISender,但是通过实现类SmsSender

使用AutoFac或Unity容器是否可能?

如果是,那我该怎么处理?

解决方法

根据Autofac文档,您可以通过4个选项来实现:

  1. Redesign your interfaces
  2. Change the registrations
  3. Use keyed services
  4. Use metadata

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...