最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#控制反轉(zhuǎn)的使用詳解

 更新時間:2026年01月04日 10:44:10   作者:上位機馬工  
控制反轉(zhuǎn)是將對象的創(chuàng)建、依賴管理和生命周期控制從應用程序代碼中轉(zhuǎn)移出來,交由外部容器來管理,下面就來詳細的介紹一下C#控制反轉(zhuǎn)的使用,感興趣的可以了解一下

前言

控制反轉(zhuǎn)是將對象的創(chuàng)建、依賴管理和生命周期控制從應用程序代碼中轉(zhuǎn)移出來,交由外部容器來管理,這種外部容器也稱為IOC容器,在C#中比較常見的IOC容器是Microsoft.Extensions.DependencyInjection

1、不使用控制反轉(zhuǎn)

下面的代碼違反了軟件設(shè)計中” 對象的創(chuàng)建和使用要分離“的原則,對象創(chuàng)建和使用都是在MainWindow類中完成,代碼耦合性很高。

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

2、使用控制反轉(zhuǎn)

使用IOC容器Microsoft.Extensions.DependencyInjection

下面的代碼中你看不到ICamera對象的創(chuàng)建過程,只能看到它的使用過程,因為對象的創(chuàng)建全部在IOC容器中實現(xiàn)了。

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
         
            //控制反轉(zhuǎn)
            var services = new ServiceCollection();
            
            // 2. 注冊服務
            services.AddScoped(typeof(ICamera ), typeof(Camera_DaHua ));
            
            // 3. 構(gòu)建服務提供者,用于解析服務
            var builder = services.BuildServiceProvider();
         
            // 4. 從服務提供者中解析并使用服務
            var car2 = builder.GetService<ICamera>();
            car2.OpenCamera ();
          
        }
    }

到此這篇關(guān)于C#控制反轉(zhuǎn)的使用詳解的文章就介紹到這了,更多相關(guān)C#控制反轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用C#快速搭建一個在windows運行的exe應用

    使用C#快速搭建一個在windows運行的exe應用

    這篇文章主要介紹了使用C#快速搭建一個在windows運行的exe應用,這是一個比較舊的內(nèi)容,但是一直都沒有空寫,今天花點時間,把我掌握的C# 分享給初學的人或者感興趣的人,希望能對你有一定幫助,感興趣的小伙伴跟著小編一起來看看吧
    2024-07-07
  • C#獲取DICOM圖像像素的像素值的代碼詳解

    C#獲取DICOM圖像像素的像素值的代碼詳解

    DICOM即醫(yī)學數(shù)字成像和通信,是醫(yī)學圖像和相關(guān)信息的國際標準(ISO 12052),它定義了質(zhì)量能滿足臨床需要的可用于數(shù)據(jù)交換的醫(yī)學圖像格式,這篇文章主要介紹了C#獲取DICOM圖像像素的像素值的方法,需要的朋友可以參考下
    2024-07-07
  • C#環(huán)境下串口通信技術(shù)的技術(shù)體系與工程實踐詳解

    C#環(huán)境下串口通信技術(shù)的技術(shù)體系與工程實踐詳解

    串口通信(Serial?Communication)是工業(yè)控制、嵌入式開發(fā)、物聯(lián)網(wǎng)領(lǐng)域最基礎(chǔ)也最持久的通信方式,本文系統(tǒng)介紹了C#環(huán)境下串口通信的核心技術(shù)與實踐方案,感興趣的小伙伴可以了解下
    2026-05-05
  • 從原理到代碼詳解C#解析Word表格數(shù)據(jù)的最佳實踐指南

    從原理到代碼詳解C#解析Word表格數(shù)據(jù)的最佳實踐指南

    在現(xiàn)代辦公環(huán)境中,Word文檔作為信息交換和存儲的重要載體,其地位舉足輕重,本文將深入探討如何使用C#從Word文檔中精確高效地提取表格數(shù)據(jù),感興趣的小伙伴可以了解下
    2025-11-11
  • c# 圓形識別方案和直線識別方案的參考示例

    c# 圓形識別方案和直線識別方案的參考示例

    這篇文章主要介紹了c# 圓形識別方案和直線識別方案的實現(xiàn)示例,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#判斷一個圖像是否是透明的GIF圖的方法

    C#判斷一個圖像是否是透明的GIF圖的方法

    這篇文章主要介紹了C#判斷一個圖像是否是透明的GIF圖的方法,涉及C#針對gif圖片屬性的相關(guān)操作技巧,需要的朋友可以參考下
    2015-06-06
  • C#定義常量的五種常用方法

    C#定義常量的五種常用方法

    作為一名 C# 程序員,常量就像我們代碼中的小伙伴,時刻陪伴著我們,在 C# 中,定義常量有幾種簡單而有效的方法,今天,我想和大家分享 5 種常用的常量定義方式,需要的朋友可以參考下
    2025-11-11
  • C#實現(xiàn)AI五子棋游戲的示例代碼

    C#實現(xiàn)AI五子棋游戲的示例代碼

    這篇文章主要為大家詳細介紹了C#如何智能AI五子棋游戲中的人工下棋操作以及對應的機器操作,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-11-11
  • Unity使用DoTween實現(xiàn)拋物線效果

    Unity使用DoTween實現(xiàn)拋物線效果

    這篇文章主要為大家詳細介紹了Unity使用DoTween實現(xiàn)拋物線效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 分享我在工作中遇到的多線程下導致RCW無法釋放的問題

    分享我在工作中遇到的多線程下導致RCW無法釋放的問題

    最近在做項目中遇到一個問題,在調(diào)用一個類庫中的方法時,出現(xiàn)如下異常信息:嘗試釋放正在使用的RCW,活動線程或其他線程上正在使用該 RCW,釋放正在使用的 RCW 的嘗試會導致?lián)p壞或數(shù)據(jù)丟失
    2015-12-12

最新評論

高唐县| 亳州市| 修武县| 仲巴县| 双城市| 宜春市| 营山县| 马边| 哈尔滨市| 杭州市| 砀山县| 磴口县| 临漳县| 修文县| 蒙城县| 正定县| 攀枝花市| 青阳县| 临城县| 贵阳市| 兴业县| 舒城县| 土默特右旗| 县级市| 咸阳市| 宝坻区| 嵊泗县| 新竹市| 嘉荫县| 舞阳县| 清远市| 石家庄市| 元阳县| 桃园市| 达尔| 乌鲁木齐市| 公主岭市| 古丈县| 宜州市| 玉田县| 贡觉县|