是的,ASP.NET Core 支持依赖注入(Dependency Injection,简称 DI)。依赖注入是一种设计模式,它允许将对象的依赖关系从对象内部解耦出来,使得对象更加灵活、可测试和维护。
在 ASP.NET Core 中,依赖注入是通过 Microsoft.Extensions.DependencyInjection 命名空间提供的。要使用依赖注入,你需要在应用程序的启动代码中配置服务容器,然后将需要注入的服务注册到容器中。接下来,在需要使用这些服务的类中,通过构造函数或其他方法将它们注入。
以下是一个简单的示例,展示了如何在 ASP.NET Core 中使用依赖注入:
public interface IMessageService
{
string GetMessage();
}
public class EmailService : IMessageService
{
public string GetMessage()
{
return "Hello from EmailService!";
}
}
Startup.cs
文件中,配置服务容器并将服务注册到容器中:public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IMessageService, EmailService>();
}
这里,AddTransient
方法表示将 EmailService
注册为 IMessageService
接口的临时实例。每次请求 IMessageService
时,都会创建一个新的 EmailService
实例。
IMessageService
的类中,通过构造函数将服务注入:public class HomeController : Controller
{
private readonly IMessageService _messageService;
public HomeController(IMessageService messageService)
{
_messageService = messageService;
}
public IActionResult Index()
{
var message = _messageService.GetMessage();
return Content(message);
}
}
在这个例子中,HomeController
通过构造函数接收一个 IMessageService
实例,并将其存储在类的私有字段中。这样,HomeController
就可以使用 EmailService
提供的服务了。