.NET的IOC依赖与注入,以及IOC原理
大家好,我是行不更名,坐不改姓的宋晓刚,下面将带领大家从基础小白到高阶的.NET的IOC依赖与注入,以及IOC原理的学习,跟上我的步伐进入C#的世界。
微信:15319589104
QQ: 2981345658
文章介绍:
-
在C#中,IOC(控制反转)是一种设计原则,它允许将依赖关系从硬编码的代码中解耦,使得代码更加灵活、可测试和可维护。IoC的核心思想是将依赖关系的创建和管理交给外部容器或框架来处理,而不是由代码本身来管理。
-
IOC依赖注入(DI)是IOC的一个实现方式,其中外部容器或框架负责创建对象、注入依赖关系,并管理它们的生命周期。通过依赖注入,可以将依赖关系从代码中分离出来,使得代码更加简洁、清晰,并能够更好地应对变化。
IOC
什么是IOC?—>IOC(Inversion of Control)控制反转
- 使用对象是,由主动new产生对象转换为从外部第三方提供对象,在这个过程中,对象的创建控制权由程序转移到外部,此思想成为控制反转。
- IOC的本质,就是专门用来创建对象的。
DI
什么是DI?
- 在创建对象A时,如果对象A依赖于对象B,对象B依赖于对象C,在创建对象A时,自动创建对象C,满足对象B的依赖,再创建对象B,满足A的依赖,最好创建出对象A
IOC于DI有什么关联
- 使用第三发来创建对象实例,落地了IOC,完成的控制反转>目标
- 在实现控制反转这个目标的时候,遇到对象依赖问题,刚好DI可以完美解决>解决依赖问题
简单实现IOC依赖与注入
接着上一篇:
依赖倒置的核心价值:如果没有依赖倒置的化,全部依赖的都是细节
分层架构:A层-B层-C层:如果我们下层修改了,可能导致上层随之改变,影响很大,使得我们架构不稳定
- 现实举例子理解:小宋同学程序员,老板来了一个需求,功能全部今天完成,提交代码,第二天老板一看,为何没有提交,罚款,小宋:一直通宵,还没有下班。因为系统架构师依赖于细节的,细节来自各种业务逻辑的实现,业务多变的,新增,修改功能,修改细节会影响其他地方,修改一个地方,就影响了其他了,这就是程序员加班原因
- 代码举例子理解:如果都是依赖抽象(抽象类/接口),抽象是相对稳定的,修改下层不会影响上层,因为上层不是依赖具体的,让我们代码更加稳定。
我们这个时候就是需要IOC对象的创建:
- 前提蓝图:前提蓝图:如果对象存在层层依赖,有多少层依赖,就需要准备多个方法,如果有依赖的,能够做到,在创建对象的时候,能够自动把对象依赖的对象创建出来,然后进去,这样不就解决了本质问题
下面我们开始案例实操:
1.0创建UIL控制台.NET7,以及三个类库分别时IOC.Common,IOC.Interfaces,IOC.Services
1.1接口类库准备项目结构IOC.Interfaces
接口项目IOC.Interfaces,准备接口IHeadphone,IMicrophone,IPhoneÿ