依赖注入(Dependency Injection,简称 DI)是一种设计模式,用于将对象的依赖关系从对象内部解耦出来,由外部容器进行管理和提供。在 Blazor 和 ASP.NET Core 中,DI 是内置的核心功能,它通过服务生命周期(Transient、Scoped、Singleton)来管理依赖项。
依赖注入(Dependency Injection)详解
核心概念
-
服务(Service):
- 服务是一个类,封装了某些功能,可以被应用程序的其他部分使用。
-
服务容器(Service Container):
- DI 容器是一个管理服务实例的工具,负责创建和提供服务实例。
- 在 ASP.NET Core 和 Blazor 中,
IServiceCollection
是服务容器的接口,配置服务时通过它进行注册。
-
依赖关系:
- 一个类如果需要另一个类来完成其功能,这种关系称为依赖关系。
DI 的优点
- 解耦: 提高代码的模块化和可维护性。
- 测试性: 通过注入模拟对象(mock)可以轻松测试。
- 生命周期管理: DI 容器负责服务的创建、销毁和共享。
服务的生命周期
在 Blazor 和 ASP.NET Core 中,DI 服务的生命周期有三