可测试代码编写与 .NET Core 单元测试全解析
1. ASP.NET Core MVC 中的依赖注入容器设置
依赖注入(DI)是 ASP.NET Core 的核心。该框架提供了内置的 DI 服务,使开发者能够创建松耦合的应用程序,并避免依赖项的实例化或构造。借助这些内置服务,应用程序代码可以配置为使用 DI,并且依赖项可以注入到 Startup
类的方法中。虽然默认的 DI 容器有一些出色的特性,但在 ASP.NET Core 应用程序中,也可以使用其他成熟的 DI 容器。
1.1 DI 的配置模式
可以通过两种模式将代码配置为使用 DI:
- 构造函数注入 :类所需的接口通过类的公共构造函数传递或注入。使用私有构造函数无法进行构造函数注入,尝试这样做会抛出 InvalidOperationException
。在具有重载构造函数的类中,只有一个构造函数可用于 DI。
- 属性注入 :依赖项通过类中的公共接口属性注入到类中。这两种模式都可用于请求依赖项,这些依赖项将由 DI 容器注入。
1.2 DI 容器的工作原理
DI 容器,也称为控制反转(IoC)容器,通常是一个类或工厂,能够创建带有相关依赖项的类。在成功构造具有注入依赖项的类之前,项目必须设计或设置为使用 DI,并且 DI 容器必须配置好依赖项类型。本质上,DI 会有一个包含接口到其具体类映射的配置,并使用此配置为需要的类解析请求的依赖项。