【问题标题】:AutoFac / Unity Container - Dependency Injection with multiple implementationsAutoFac / Unity Container - 具有多种实现的依赖注入
【发布时间】:2020-08-12 11:14:45
【问题描述】:

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

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

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

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

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

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

这可能使用 AutoFac 或 Unity 容器吗?

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

【问题讨论】:

标签: asp.net asp.net-web-api dependency-injection autofac unity-container


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 2014-08-16
    • 2015-10-25
    相关资源
    最近更新 更多