C#控制反轉(zhuǎn)的使用詳解
前言
控制反轉(zhuǎn)是將對(duì)象的創(chuàng)建、依賴管理和生命周期控制從應(yīng)用程序代碼中轉(zhuǎn)移出來,交由外部容器來管理,這種外部容器也稱為IOC容器,在C#中比較常見的IOC容器是Microsoft.Extensions.DependencyInjection
1、不使用控制反轉(zhuǎn)
下面的代碼違反了軟件設(shè)計(jì)中” 對(duì)象的創(chuàng)建和使用要分離“的原則,對(duì)象創(chuàng)建和使用都是在MainWindow類中完成,代碼耦合性很高。
public MainWindow()
{
InitializeComponent();
//非控制反轉(zhuǎn)
ICamera camera= new Camera_DaHua();
camera.OpenCamera();
}
2、使用控制反轉(zhuǎn)
使用IOC容器Microsoft.Extensions.DependencyInjection

下面的代碼中你看不到ICamera對(duì)象的創(chuàng)建過程,只能看到它的使用過程,因?yàn)閷?duì)象的創(chuàng)建全部在IOC容器中實(shí)現(xiàn)了。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
//控制反轉(zhuǎn)
var services = new ServiceCollection();
// 2. 注冊(cè)服務(wù)
services.AddScoped(typeof(ICamera ), typeof(Camera_DaHua ));
// 3. 構(gòu)建服務(wù)提供者,用于解析服務(wù)
var builder = services.BuildServiceProvider();
// 4. 從服務(wù)提供者中解析并使用服務(wù)
var car2 = builder.GetService<ICamera>();
car2.OpenCamera ();
}
}
到此這篇關(guān)于C#控制反轉(zhuǎn)的使用詳解的文章就介紹到這了,更多相關(guān)C#控制反轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實(shí)現(xiàn)程序等待延遲執(zhí)行的方法
這篇文章主要介紹了C#實(shí)現(xiàn)程序等待延遲執(zhí)行的方法,涉及C#動(dòng)態(tài)鏈接庫的使用及延遲的實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-09-09
C# Csv實(shí)現(xiàn)基本的讀寫和轉(zhuǎn)換DataTable
本文主要介紹了C# Csv實(shí)現(xiàn)基本的讀寫和轉(zhuǎn)換DataTable,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
C# winfroms使用socket客戶端服務(wù)端的示例代碼
這篇文章主要為大家詳細(xì)介紹了C# winfroms使用socket客戶端服務(wù)端的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02
深入解析C#編程中struct所定義的結(jié)構(gòu)
這篇文章主要介紹了C#編程中struct所定義的結(jié)構(gòu),與C++一樣,C#語言同時(shí)擁有類和結(jié)構(gòu),需要的朋友可以參考下2016-01-01
C#如何優(yōu)雅地取消進(jìn)程的執(zhí)行之Cancellation詳解
本文介紹了.NET框架中的取消協(xié)作模型,包括CancellationToken的使用、取消請(qǐng)求的發(fā)送和接收、以及如何處理取消事件2024-12-12
C# / VB.NET 在PPT中創(chuàng)建、編輯PPT SmartArt圖形的方法詳解
本文介紹通過C#和VB.NET程序代碼來創(chuàng)建和編輯PPT文檔中的SmartArt圖形。文中將分兩個(gè)操作示例來演示創(chuàng)建和編輯結(jié)果,需要的朋友可以參考下2020-10-10

