依赖关系注入通过以下方式解决了这些问题:
- 使用接口或基类将依赖关系实现抽象化。
- 在服务容器中注册依赖关系。 ASP.NET Core 提供了一个内置的服务容器 IServiceProvider。 服务通常已在应用的
Program.cs文件中注册。 - 将服务注入到使用它的类的构造函数中。 框架负责创建依赖关系的实例,并在不再需要时将其释放


通过使用 DI 模式,控制器或 Razor 页面:
- 不使用具体类型
MyDependency,仅使用它实现的IMyDependency接口。 这样可以轻松地更改实现,而无需修改控制器或 Razor 页面。 - 不创建
MyDependency的实例,这由 DI 容器创建。