查看: 36|回复: 0

[教程] C#控制反转的使用详解

[复制链接]

4

主题

0

回帖

0

积分

积极分子

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2008-2-6
发表于 2026-1-4 10:44:10 | 显示全部楼层 |阅读模式

前言

控制反转是将对象的创建、依赖管理和生命周期控制从应用程序代码中转移出来,交由外部容器来管理,这种外部容器也称为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 ();
          
        }
    }

到此这篇关于C#控制反转的使用详解的文章就介绍到这了,更多相关C#控制反转内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!

您可能感兴趣的文章:
  • C#中控制反转和依赖注入原理及实现
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部