在Asp.net Core中实现DI

时间:2017-02-06 10:03:29

标签: dependency-injection asp.net-core

这个问题不同,我知道DI是什么,但我想知道asp.net核心如何使用DI。我们可以在ASP.NET Core中配置自定义日志记录,但我不知道它为什么会起作用。

通常,我们使用new关键字来实例化一个类,然后我们可以在控制器中使用它。在ASP.NET Core中,我们使用带有如下参数的控制器构造函数:

public class HomeController : Controller
{
    private readonly ILogger _logger;
    public HomeController(ILogger<HomeController> logger)
    {
        _logger = logger;
    }
}

我知道这是一个名为Dependency Injection的设计模式,但我想知道这是如何实现的。 ASP.NET核心团队是如何实现这一目标的?

1 个答案:

答案 0 :(得分:0)

在依赖注入和反转控制术语中,注入的内容称为“服务”。

您在应用程序启动时使用IoC容器注册服务,这意味着:您将具体实现和生命周期绑定到某种类型。

现在,当需要控制器来提供传入请求时,MVC将使用控制器工厂来查找并实例化相关控制器。当该控制器具有构造函数参数时,它将要求IoC容器解析所需的服务参数。

有关docs.microsoft.com: Dependency injection into controllers的更多信息。