当前位置: 首页 > news >正文

C#控制反转

前言

控制反转是将对象的创建、依赖管理和生命周期控制从应用程序代码中转移出来,交由外部容器来管理,这种外部容器也称为IOC容器,在C#中比较常见的IOC容器是Microsoft.Extensions.DependencyInjection

1、不使用控制反转

下面的代码违反了软件设计中” 对象的创建和使用要分离“的原则,对象创建和使用都是在MainWindow类中完成,代码耦合性很高。

  public MainWindow(){InitializeComponent();//非控制反转ICamera camera= new Camera_DaHua();camera.OpenCamera();}

2、使用控制反转

使用IOC容器Microsoft.Extensions.DependencyInjection
在这里插入图片描述

下面的代码中你看不到ICamera对象的创建过程,只能看到它的使用过程,因为对象的创建全部在IOC容器中实现了。

public partial class MainWindow : Window{public MainWindow(){InitializeComponent();//控制反转var services = new ServiceCollection();// 2. 注册服务services.AddScoped(typeof(ICamera ), typeof(Camera_DaHua ));// 3. 构建服务提供者,用于解析服务var builder = services.BuildServiceProvider();// 4. 从服务提供者中解析并使用服务var car2 = builder.GetService<ICamera>();car2.OpenCamera ();}}

马工撰写的年入30万+C#上位机项目实战必备教程(点击下方链接即可访问文章目录)

1、《C#串口通信从入门到精通》
2、《C#与PLC通信从入门到精通 》
3、《C# Modbus通信从入门到精通》
4、《C#Socket通信从入门到精通 》
5、《C# MES通信从入门到精通》
6、《winform控件从入门到精通》
7、《C#操作MySql数据库从入门到精通》

http://www.dtcms.com/a/490522.html

相关文章:

  • 【Java 开发日记】什么是线程池?它的工作原理?
  • 黄页网站数据来源wordpress 最新漏洞
  • 如何评价3D高斯泼溅(3DGS)技术为数字孪生与实时渲染带来的突破性进展?
  • 技术解析:如何将NX(UG)模型高效转换为3DXML格式
  • 阿里云智能建站网络类黄页
  • SAP MIR7 模拟过账没有这个按钮
  • Redis 分布式锁实战:解决马拉松报名并发冲突与 Lua 原子性优化
  • 光刻胶化学基础:聚合物分子量分布对分辨率的影响与控制,以及国内技术突破
  • Lua C API 中的注册表介绍
  • 广州做网站哪家公司最好wordpress html调用php
  • 神经网络之计算图
  • Hatch 故障排除指南
  • 神经网络之计算图分支节点
  • 【表格对比分析】Java集合体系、Java并发编程、JVM核心知识、Golang go-zero微服务框架
  • 【任务管理软件】实用工具之ToDoList 9.0.6 详细图文安装教程:高效任务管理的完美起点
  • Linux中zonelist分配策略初始化
  • hadoop的三副本数据冗余策略
  • 岳阳网站建设企业足球比赛直播app下载
  • React 三元运算符页面切换:完整进出流程
  • NumPy zeros_like() 函数详解
  • 网站建设要后台吗公司网页制作哪家好
  • 天津网站建设优化网页设计图片代码
  • CXR SDK实战指南:跨设备AR应用开发
  • 已知明文攻击(Known plaintext):原理、方法与防御体系深度剖析
  • ​SPI四种工作模式
  • 深度学习------YOLOV1和YOLOV2
  • 最小二乘问题详解5:非线性最小二乘求解实例
  • 算法入门数学基础
  • 错误边界:用componentDidCatch筑起React崩溃防火墙
  • 网站备案提交管局原创软文