.NET MAUI에서 종속성 주입을 사용하는 방법 알아보기

아시다시피 .NET MAUIXamarin.Forms에서 더 나은 개발자 경험과 더 나은 성능으로 발전했습니다. 왕관에 보석을 추가하는 것처럼 .NET MAUI를 사용하면 Xamarin.Forms보다 훨씬 쉽게 dependency injection을 사용할 수 있습니다.

이 블로그에서는 .NET MAUI 애플리케이션에서 종속성 주입을 사용하는 것이 얼마나 쉬운지 살펴보겠습니다.

의존성 주입이란 무엇입니까?



종속성 주입은 개체(클라이언트)가 의존하는 다른 개체(서비스)를 받는 방법일 뿐입니다. 여기서 인젝터는 서비스 객체를 클라이언트 객체에 전달하는 메서드 또는 코드를 의미합니다. 종속성 주입은 inversion of control 패턴의 버전입니다. 여기서 서비스 클래스는 런타임 시 개체에 종속성을 주입합니다.

장점



종속성 주입의 주요 이점은 클래스와 해당 종속성 간의 결합을 줄이는 것입니다.

종속성이 구현되는 방법을 알고 유지할 필요가 없기 때문에 우리의 코드는 재사용, 테스트 및 유지 관리가 더 쉬워질 것입니다.

이렇게 하면 서비스 및 클라이언트 개체에 보다 유연하게 액세스할 수 있습니다.

.NET MAUI 앱에서 종속성 주입 사용



LabelText 속성이 있는 ViewModel 및 Label이 포함된 MainPage가 있는 .NET MAUI 앱이 있습니다. 다음 코드 예제를 참조하십시오.

MainPage.xaml

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="DependencyInjectionInMAUI.MainPage"><Label VerticalTextAlignment="Center" HorizontalTextAlignment="Center" Text="{Binding LabelText}"/>
</ContentPage>


ViewModel.cs

namespace DependencyInjectionInMAUI
{
public class ViewModel
{
public string LabelText { get; set; } = "Hello World";
}
}


다음 단계에 따라 종속성 주입을 사용하여 LabelText 속성을 Label 텍스트에 바인딩해 보겠습니다.

1단계: MauiProgram.cs 파일을 엽니다. 그런 다음 Microsoft.Extensions.DependencyInjection 참조를 추가하여 서비스의 확장 메서드에 액세스합니다.

MauiProgram.cs

using Microsoft.Maui;
using Microsoft.Maui.Hosting;
using Microsoft.Maui.Controls.Compatibility;
using Microsoft.Maui.Controls.Hosting;
using Microsoft.Extensions.DependencyInjection;namespace DependencyInjectionInMAUI
{
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
});return builder.Build();
}
}
}


2단계: 그런 다음 MainPage 및 View 모델에 대한 종속성 주입 싱글톤 서비스를 추가합니다.

MauiProgram.cs

using Microsoft.Maui;
using Microsoft.Maui.Hosting;
using Microsoft.Maui.Controls.Compatibility;
using Microsoft.Maui.Controls.Hosting;
using Microsoft.Extensions.DependencyInjection;namespace DependencyInjectionInMAUI
{
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
});builder.Services.AddSingleton<MainPage>();builder.Services.AddSingleton<ViewModel>();
return builder.Build();
}
}
}


3단계: 2단계에서 설명한 대로 필요한 서비스를 성공적으로 추가한 후 원하는 클래스 생성자에서 해당 개체에 직접 액세스할 수 있습니다. 따라서 이러한 클래스의 생성자에 인수를 추가하여 각각 App.xaml.cs 및 MainPage.xaml.cs 파일에서 MainPage 및 ViewModel 서비스 개체에 액세스합니다.

Appxaml.cs

namespace DependencyInjectionInMAUI
{
public partial class App : Application
{
public App(MainPage mainPage)
{
InitializeComponent();MainPage = new MainPage();
}
}
}


MainPage.xaml.cs

namespace DependencyInjectionInMAUI
{
public partial class MainPage : ContentPage
{
public MainPage( ViewModel viewModel)
{
InitializeComponent();
}}
}


4단계: 이제 생성자 인수에서 서비스 개체를 가져와서 다음 코드와 같이 클라이언트 개체에 할당합니다.

Appxaml.cs

namespace DependencyInjectionInMAUI
{
public partial class App : Application
{
public App(MainPage mainPage)
{
InitializeComponent();MainPage = mainPage;
}
}
}


MainPage.xaml.cs

namespace DependencyInjectionInMAUI
{
public partial class MainPage : ContentPage
{
public MainPage( ViewModel viewModel)
{
InitializeComponent();this.BindingContext = viewModel;
}}
}


그게 다야. 이제 프로그램을 실행하고 결과를 확인하십시오.


종속성 주입을 사용한 개체 바인딩

GitHub 참조



자세한 내용은 dependency injection in a .NET MAUI application on GitHub 에 대한 전체 예제를 참조하십시오.

결론



읽어 주셔서 감사합니다! 종속성 주입 기술을 사용하여 .NET MAUI 앱에서 작업하는 것이 얼마나 쉬운지 배웠기를 바랍니다. 이를 통해 코드를 쉽게 재사용, 테스트 및 유지 관리할 수 있습니다. Syncfusion.NET MAUI 컨트롤이 포함된 .NET MAUI 앱에서 종속성 주입을 사용할 수도 있습니다. 매 분기마다 기존Xamarin.Forms 컨트롤을 대체하기 위해 더 많은 .NET MAUI 컨트롤을 제공하므로 .NET MAUI 프로젝트로 마이그레이션한 후에 사용할 수 있습니다.

.NET MAUI 제품군에서 보고 싶은 피드백, 특별 요구 사항 또는 컨트롤이 있는 경우 아래 설명 섹션에 언급하십시오.

support forum , support portal 또는 feedback portal 을 통해 저희에게 연락하실 수도 있습니다. 기꺼이 도와드리겠습니다!

관련 블로그


  • What’s New in .NET MAUI: 2021 Volume 4
  • How to Customize .NET MAUI Controls with Handler Architecture
  • How to Reuse Xamarin.Forms Custom Renderers in .NET MAUI
  • The All-New .NET MAUI Tab View Control Is Here
  • 좋은 웹페이지 즐겨찾기