.netcore中的依赖注入
2021-03-09 03:27
标签:summary enc getc control add rtu 概念 自己 com 1、依赖:简单的讲就是“引用到”。例如AccountController.cs引用到IAccountService.cs,那么AccountController依赖IAccountService。 2、依赖倒置:依赖倒置是指程序要依赖于抽象或者接口,不要依赖于具体实现(高层模块不依赖于底层模块,不依赖于具体实现,而应该依赖接口)。是六大设置原则之一。它的优势在于当高层模块变化时,底层模块无需改动,达到解耦的目的。 3、反转控制(IOC):是一种设计思想,相对于“正转控制”;所谓的“正转控制”是指类内部自行创建其依赖的类。而反转控制则是谁调用谁创建。例如类A依赖类B,那么不应该A自己创建B,而是应该由A的调用者C创建B给A使用。 4、依赖注入(DI):其实就是IOC思想的实践。就是依赖的注入。依赖注入的方式:1、构造函数注入,2、属性注入、3、方法注入 5、IOC容器:无论是反转控制还是“正转控制”,都免不了创建对象,只是改变了创建对象的时机和传递。为了优化这种对象的创建,引入了IOC容器,它相当于对象的工厂,我们只需要注册(绑定)服务与市里的关系,在需要使用时,容器自动帮我们创建,并维护对象的生命周期(创建销毁) .netcore依赖注入的实现是在Microsoft.Extensions.DependencyInjection这个程序集中。 IServiceCollection 负责注册 IServiceProvider 负责提供实例 容器中获取的实例的生命周期分为三种: 1、Transient: 每一次GetService都会创建一个新的实例(瞬时的) 2、Scoped: 在同一个Scope内只初始化一个实例 ,可以理解为( 每一个request级别只创建一个实例,同一个http request会在一个 scope内)(一次请求过程) 3、Singleton :整个应用程序生命周期以内只创建一个实例(单例的) 简要代码说明 上面的代码仅仅是说明.netcore中的依赖注入容器的注册和对象获取。在WebApi项目或者web项目中,我们基本上是不需要编写从容器中获取对象来执行的,一般都是直接在controller的构造函数中声明依赖的服务接口,在startup类中注入服务。在Controller被初始化时,.netcore自动帮我们完成了注入,很方便使用。 .netcore中的依赖注入 标签:summary enc getc control add rtu 概念 自己 com 原文地址:https://www.cnblogs.com/johnyong/p/12865504.htmlIOC、DI相关概念的理解
.netcore的依赖注入
///