依赖注入-ioc框架
例子:电脑需要从u盘读取文件
电脑主机读取文件的时候,它一点也不会关心USB接口上连接的是什么外部设备,而且它确实也无须知道。它的任务就是读取USB接口,挂接的外部设备只要符合USB接口标准即可。所以,如果我给电脑主机连接上一个U盘,那么主机就从U盘上读取文件;如果我给电脑主机连接上一个外置硬盘,那么电脑主机就从外置硬盘上读取文件。挂接外部设备的权力由我作主,即控制权归我,至于USB接口挂接的是什么设备,电脑主机是决定不了,它只能被动的接受。电脑主机需要外部设备的时候,根本不用它告诉我,我就会主动帮它挂上它想要的外部设备,你看我的服务是多么的到位。这就是我们生活中常见的一个依赖注入的例子。在这个过程中,我就起到了IOC容器的作用。
如果A依赖于B,即在A中需要实例化B的对象,此时A和B之间就造成了一种耦合关系,此时可以通过IOC容器,生成B的实例化对象,并把这个对象添加到A类中,这样就能够有效减少类与类之间的耦合。
控制反转实现的方式有两种
1、服务定位器
2、依赖注入(DI)
DI的几个概念
服务:对象;
注册服务;
服务容器:负责管理注册的服务;
查询服务:创建对象及关联对象
对象生命周期:Transient(瞬态);Scope(范围);Singleton(单例)
2.NET中使用DI
1.根据类型来获取和注册服务。
2.可以分别指定服务类型(service type)和实现类型(implementation type)。这两者可能相同,也可能不同。服务类型可以是类,也可以是接口,建议面向接口编程,更灵活。
3.NET控制反转组件取名为DependencyInjection,但它包含ServiceLocator的功能。
4.使用DI的步骤:
Install-Package Microsoft.Extensions.DependencyInjection
using Microsoft.Extensions.DependencyInjection
ServiceCollection用来构造容器对象IServiceProvider 。调用ServiceCollection的BuildServiceProvider()创建的ServiceProvider,可以用来获取BuildServiceProvider()之前ServiceCollection中的对象。
————————————————
版权声明:本文为CSDN博主「卖栗子的嵩鼠」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_48239221/article/details/126441494
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)