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

AutoFac / Unity Container - Dependency Injection with multiple implementations

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

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

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

然后假设我有 2 个使用相同 ISender 接口的 SmsSenderMailSender 的实现。

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

现在我希望依赖项注入器通过 class MailSender 的实现将 ISender 注入 MailController 并且在 SmsController 中我也想注入 ISender , 但随着 class SmsSender.

的实施

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

如果是,那我该如何处理?

根据 Autofac 文档,您有 4 个选项可以实现此目的:

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