.NET MAUI - Configuration 을 이용한 json 파일 제어
2022. 8. 30. 00:00ㆍMAUI
반응형
MAUI 를 사용하다 보면 json 파일을 이용하여 config 을 구성하고 싶을 때가 있다.
가장 좋은 방법은 .NET 에서 기본적으로 지원해 주는 IConfiguration 을 이용하는 방법이다.
MAUI 에서 Configuration 을 사용하는 방법을 알아보자.
MAUI 에서 시작 Project 를 선택하고 다음 두가지 package 를 설치 하자
- Microsoft.Extensions.Configuration.Binder
- Microsoft.Extensions.Configuration.Json
설치가 완료되었다면 MauiProgram.cs 로 이동하자.
그리고 아래 코드를 입력하자.
using Microsoft.Extensions.Configuration;
...
using var stream = Assembly.GetExecutingAssembly()
.GetManifestResourceStream("YourAppName.appsettings.json");
var config = new ConfigurationBuilder().AddJsonStream(stream).Build();
builder.Configuration.AddConfiguration(config);
Project 에 appsettings.json 을 추가하자
ctrl + shift + A --> appsettings.json 추가
appsettings.json --> 속성 --> 아래와 같이 설정
appsettings.json
{
"Settings": {
"KeyOne": 1,
"KeyTwo": true,
"KeyThree": {
"Message": "하하하 이거 대박이야!!"
}
}
}
Configuration/MainPage.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiApp1.Configuration.MainPage"
xmlns:local="clr-namespace:MauiApp1.Configuration"
Title="Main Page">
<VerticalStackLayout Padding="10" Spacing="20">
<Label
Text="{Binding Name}"
VerticalOptions="Center"
HorizontalOptions="Center"
FontSize="24"/>
<Button Command="{Binding ChangeNameCommand}" Text="Change Name" />
</VerticalStackLayout>
</ContentPage>
Configuration/MainPage.xaml.cs
using MauiApp1.InjectableServices;
namespace MauiApp1.Configuration;
public partial class MainPage : ContentPage, ITransientService
{
public MainPage(MainViewModel mainViewModel)
{
InitializeComponent();
BindingContext = mainViewModel;
}
}
Configuration/MainViewModel.cs
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using MauiApp1.InjectableServices;
using Microsoft.Extensions.Configuration;
namespace MauiApp1.Configuration;
public partial class MainViewModel : ObservableObject, ITransientService
{
private readonly IConfiguration _configuration;
public MainViewModel(IConfiguration configuration)
{
Name = "My Name is Yogingang";
_configuration = configuration;
}
[ObservableProperty]
private string name;
[RelayCommand]
private void ChangeName() => Name = DateTime.UtcNow + " " +
_configuration
.GetSection("Settings")
.GetSection("KeyThree")
.GetValue<string>("Message");
}
IConfiguration 을 Injection 하여 ChangeNameCommand 가 trigger 되면 utcNow 와 함께 Message 를 가져온다.
실행
관련영상
반응형
'MAUI' 카테고리의 다른 글
.NET MAUI - MediatR 을 이용한 Event Mechanism 구현 (0) | 2022.09.01 |
---|---|
.NET MAUI - HttpClient 를 이용한 Rest Api 호출 (0) | 2022.08.31 |
.NET MAUI - CommunityToolkit.Maui 유용한 Behavior 3 (0) | 2022.08.26 |
.NET MAUI - CommunityToolkit.Maui 유용한 Behavior 2 (0) | 2022.08.25 |
.NET MAUI - CommunityToolkit.Maui 유용한 Behavior 1 (0) | 2022.08.24 |