【C#/.NET】MAUI上的依賴注入

引言

????????在移動(dòng)應(yīng)用開發(fā)中,依賴注入是一項(xiàng)非常重要的技術(shù),它可以幫助我們簡化代碼結(jié)構(gòu)、提高可維護(hù)性并增加測(cè)試覆蓋率。在最新的.NET跨平臺(tái)框架MAUI中,我們也可以利用依賴注入來構(gòu)建高效的應(yīng)用程序架構(gòu)。本文將詳細(xì)介紹在MAUI上如何使用依賴注入,旨在幫助開發(fā)者更好地理解和應(yīng)用這一技術(shù)。

什么是依賴注入?

????????依賴注入是一種設(shè)計(jì)模式,它通過將對(duì)象的創(chuàng)建和依賴關(guān)系的管理交給容器來簡化應(yīng)用程序的開發(fā)。依賴注入有助于解耦組件之間的依賴關(guān)系,使得代碼更加靈活、可擴(kuò)展并且易于測(cè)試。

為什么在MAUI上使用依賴注入?

????????在MAUI中,應(yīng)用程序需要處理各種不同的服務(wù)、組件和資源,而這些依賴關(guān)系的管理可能會(huì)變得非常復(fù)雜。使用依賴注入可以有效地解耦這些依賴關(guān)系,使得我們能夠更加專注于應(yīng)用程序的業(yè)務(wù)邏輯,而無需關(guān)注底層的實(shí)現(xiàn)細(xì)節(jié)。

如何在MAUI上使用依賴注入?

????????首先創(chuàng)建好一個(gè).NET MAUI項(xiàng)目之后,需要有以下前提條件

? ?

? ? ? ? ? HorizontalTextAlignment="Center"

? ? ? ? ? Text="{Binding LabelText}"/>

namespace QuickCalc.App.ViewModels;publicclass LabelViewModel

{

? ? publicstringLabelText {get;set; } ="Hello World";

}

????????我們通過依賴注入將LabelText屬性綁定到Label的Text上。


varbuilder = MauiApp.CreateBuilder();

? ? ? ? ? ? builder

? ? ? ? ? ? ? ? .UseMauiApp()

? ? ? ? ? ? ? ? .ConfigureFonts(fonts =>? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? fonts.AddFont("OpenSans-Regular.ttf","OpenSansRegular");

? ? ? ? ? ? ? ? ? ? fonts.AddFont("OpenSans-Semibold.ttf","OpenSansSemibold");

? ? ? ? ? ? ? ? });#ifDEBUG? ? ? ? builder.Logging.AddDebug();#endifreturnbuilder.Build();

第一步安裝Microsoft.Extensions.DependencyInjection

Install-Package Microsoft.Extensions.DependencyInjection

第二步打開MauiProgram.cs

publicstatic MauiApp CreateMauiApp()

? ? ? ? {

? ? ? ? ? ? varbuilder = MauiApp.CreateBuilder();

? ? ? ? ? ? builder

? ? ? ? ? ? ? ? .UseMauiApp()

? ? ? ? ? ? ? ? .ConfigureFonts(fonts =>? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? fonts.AddFont("OpenSans-Regular.ttf","OpenSansRegular");

? ? ? ? ? ? ? ? ? ? fonts.AddFont("OpenSans-Semibold.ttf","OpenSansSemibold");

? ? ? ? ? ? ? ? });

? ? ? ? ? ? //服務(wù)注冊(cè)builder.Services.AddSingleton();

? ? ? ? ? ? builder.Services.AddSingleton();#ifDEBUG? ? ? ? builder.Logging.AddDebug();#endifreturn builder.Build();

? ? ? ? }

????????增加的兩句服務(wù)注冊(cè)

builder.Services.AddSingleton();

builder.Services.AddSingleton();

第三步修改App.xaml.cs

publicpartialclass App : Application

? {

? ? ? public App(MainPage mainPage)

? ? ? {

? ? ? ? ? InitializeComponent();

? ? ? ? ? MainPage = mainPage;

? ? ? }

? }

????????增加了MainPage的構(gòu)造函數(shù)注入

第四步修改MainPage.xaml.cs

publicpartialclass MainPage : ContentPage

{

? ? public MainPage(LabelViewModel labelViewModel)

? ? {

? ? ? ? InitializeComponent();

? ? ? ? BindingContext = labelViewModel;

? ? }

}

????????增加了LabelViewModel的構(gòu)造函數(shù)注入以及BindingContext的賦值。

第五步運(yùn)行程序

至此,運(yùn)行項(xiàng)目可以看到hello,World!已經(jīng)在MAUI中繼承了依賴

?結(jié)論

????????在MAUI上,依賴注入是一個(gè)非常有價(jià)值的技術(shù),它可以幫助我們構(gòu)建簡潔、靈活和可測(cè)試的應(yīng)用程序。通過合理地使用依賴注入,我們能夠有效地管理和解耦組件之間的依賴關(guān)系,提高開發(fā)效率和代碼質(zhì)量。希望本文對(duì)您理解和應(yīng)用MAUI上的依賴注入有所幫助!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容