本节介绍Util应用框架依赖注入的使用和配置扩展. 文章分为多个小节,如果对设计原理不感兴趣,只需阅读基础用法部分即可. 概述 当你想调用某个服务的方法完成特定功能时,首先需要得到这个服务的实例. 最简单的办法是直接 new 一个服务实例,不过这样就把服务的实现牢牢绑死了,当你需要更换实现,除了直接修改它没有别的办法. 依赖注入是一种获取服务实例更好的方法. 通常需要先定义服务接口,然后在你的构造方法声明这些接口参数. 服务实例不是你创建的,而是从外部传入的. 你只跟服务接口打交道,所以不会被具体的实现类绑死. 现在每个服务都在自己的构造方法定义参数接收依赖项,但是最终必须在某处真正创建这些服务实例. 使用new手工创建服务实例是不可行的,因为存在依赖链,比如使用 new A() 创建服务A的实例时,服务A可能依赖服务B,需要先创建服务B的实例,而服务B可能还有依赖. 另外,某些服务可能需要特定的生命周期,比如工作单元服务,在单个请求过程,每次注入的工作单元实例必须是同一个. 我们需要一种机制,能够自动创建具有依赖的服务实例,并管理实例的生命周期. Asp.Net Core 内置了构造方法依赖注入能力.