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

2023-06-30 21:00:28

引言

        在移動應用開發中,依賴注入是一項非常重要的技術,它可以幫助我們簡化程式碼結構、提高可維護性並增加測試覆蓋率。在最新的.NET跨平臺框架MAUI中,我們也可以利用依賴注入來構建高效的應用程式架構。本文將詳細介紹在MAUI上如何使用依賴注入,旨在幫助開發者更好地理解和應用這一技術。

什麼是依賴注入?

        依賴注入是一種設計模式,它通過將物件的建立和依賴關係的管理交給容器來簡化應用程式的開發。依賴注入有助於解耦元件之間的依賴關係,使得程式碼更加靈活、可延伸並且易於測試。

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

        在MAUI中,應用程式需要處理各種不同的服務、元件和資源,而這些依賴關係的管理可能會變得非常複雜。使用依賴注入可以有效地解耦這些依賴關係,使得我們能夠更加專注於應用程式的業務邏輯,而無需關注底層的實現細節。

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

        首先建立好一個.NET MAUI專案之後,需要有以下前提條件

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="QuickCalc.App.MainPage">

    <Label VerticalTextAlignment="Center" 
           HorizontalTextAlignment="Center" 
           Text="{Binding LabelText}"/>

</ContentPage>

 

namespace QuickCalc.App.ViewModels;

public class LabelViewModel
{
    public string LabelText { get; set; } = "Hello World";
}

 

        我們通過依賴注入將LabelText屬性繫結到Label的Text上。

 

 var builder = MauiApp.CreateBuilder();
            builder
                .UseMauiApp<App>()
                .ConfigureFonts(fonts =>
                {
                    fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                    fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
                });
#if DEBUG
        builder.Logging.AddDebug();
#endif

            return builder.Build();

 

第一步安裝Microsoft.Extensions.DependencyInjection

Install-Package Microsoft.Extensions.DependencyInjection

 

第二步開啟MauiProgram.cs

  public static MauiApp CreateMauiApp()
        {
            var builder = MauiApp.CreateBuilder();
            builder
                .UseMauiApp<App>()
                .ConfigureFonts(fonts =>
                {
                    fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                    fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
                });
            //服務註冊
            builder.Services.AddSingleton<MainPage>();
            builder.Services.AddSingleton<LabelViewModel>();
#if DEBUG
        builder.Logging.AddDebug();
#endif

            return builder.Build();
        }

 

        增加的兩句服務註冊

builder.Services.AddSingleton<MainPage>();
builder.Services.AddSingleton<LabelViewModel>();

 

第三步修改App.xaml.cs

  public partial class App : Application
  {
      public App(MainPage mainPage)
      {
          InitializeComponent();

          MainPage = mainPage;
      }
  }

 

        增加了MainPage的建構函式注入

第四步修改MainPage.xaml.cs

 public partial class MainPage : ContentPage
 {

     public MainPage(LabelViewModel labelViewModel)
     {
         InitializeComponent();
         BindingContext = labelViewModel;
     }
 }

 

        增加了LabelViewModel的建構函式注入以及BindingContext的賦值。

第五步執行程式

        至此,執行專案可以看到hello,World!已經在MAUI中繼承了依賴

 結論

        在MAUI上,依賴注入是一個非常有價值的技術,它可以幫助我們構建簡潔、靈活和可測試的應用程式。通過合理地使用依賴注入,我們能夠有效地管理和解耦元件之間的依賴關係,提高開發效率和程式碼質量。希望本文對您理解和應用MAUI上的依賴注入有所幫助!