C#控制反转 📅 2026/7/13 20:55:13 前言控制反转Inversion of Control是将对象的创建、依赖管理和生命周期控制从使用这个对象的类转移到别的类一般情况下交由外部容器来管理这种外部容器也称为IOC容器有没有这个容器都可以实现控制反转容器的好处是对对象做了统一管理在C#中比较常见的IOC容器是Microsoft.Extensions.DependencyInjection这里需要注意的是控制反转是一种设计思想依赖注入就是控制反转的一个具体实现方式。1、不使用控制反转下面的代码违反了软件设计中” 对象的创建和使用要分离“的原则ICamera 对象创建和使用都是在Run类中完成代码耦合性很高。classRun{//构造函数注入publicICameracamera{get;set;}//无依赖注入publicRun(){cameranewCamera_DaHua();}publicvoidTest(){camera.OpenCamera();}}publicForm1(){InitializeComponent();RunrunnewRun();run.Test();}2、使用控制反转使用IOC容器Microsoft.Extensions.DependencyInjection下面的代码中你看不到ICamera对象的创建过程只能看到它的使用过程因为对象的创建全部在IOC容器中实现了。classRun{//构造函数注入publicICameracamera{get;set;}publicvoidTest(){camera.OpenCamera();}//构造函数注入publicRun(ICamera_camera){camera_camera;}}publicForm1(){InitializeComponent();varservicesnewServiceCollection();// 2. 注册服务services.AddScoped(typeof(ICamera),typeof(Camera_HaiKang));// 3. 构建服务提供者用于解析服务varbuilderservices.BuildServiceProvider();// 4. 从服务提供者中解析并使用服务varcamerabuilder.GetServiceICamera();RunrunnewRun(camera);run.Test();}马工撰写的年入30万C#上位机项目实战必备教程点击下方链接即可访问文章目录1、《C#串口通信从入门到精通》2、《C#与PLC通信从入门到精通 》3、《C# Modbus通信从入门到精通》4、《C#Socket通信从入门到精通 》5、《C# MES通信从入门到精通》6、《winform控件从入门到精通》7、《C#操作MySql数据库从入门到精通》