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数据库从入门到精通》