这个问题不同,我知道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核心团队是如何实现这一目标的?
答案 0 :(得分:0)
在依赖注入和反转控制术语中,注入的内容称为“服务”。
您在应用程序启动时使用IoC容器注册服务,这意味着:您将具体实现和生命周期绑定到某种类型。
现在,当需要控制器来提供传入请求时,MVC将使用控制器工厂来查找并实例化相关控制器。当该控制器具有构造函数参数时,它将要求IoC容器解析所需的服务参数。
有关docs.microsoft.com: Dependency injection into controllers的更多信息。