.NET Community Toolkit 8.4.0์ด ์ถ์๋์์ต๋๋ค.
Announcing .NET Community Toolkit 8.4 - .NET Blog
Release 8.4.0 ยท CommunityToolkit/dotnet ยท GitHub
์ฃผ์ ๋ณ๊ฒฝ์ฌํญ์ .NET 9 ๊ณต์ ์ถ์์ ๋ฐ๋ฅธ partial property ๊ธฐ๋ฐ [ObservableProperty] Source Generator ์ ๋ฐ์ดํธ ์ ๋๋ค.
partial property ๊ธฐ๋ฐ ์ฝ๋ ์์ฑ
๊ธฐ์กด (ํ๋ ๊ธฐ๋ฐ ์์ฑ)
partial class MyViewModel : ObservableObject
{
[ObservableProperty]
private string name;
[ObservableProperty]
private bool isEnabled;
}
์ ๋ฐ์ดํธ (partial property)
partial class MyViewModel : ObservableObject
{
[ObservableProperty]
public partial string Name { get; set; }
[ObservableProperty]
public partial bool IsEnabled { get; set; }
}
๋ฐ๋ผ์ ์๋์ ๊ฐ์ด ํ๋ ๊ธฐ๋ฐ ์์ฑ์ ๋ฐ๋ฅธ ๋ณด์กฐ ํน์ฑ ์ง์ ์์ด ๊ตฐ๋๋๊ธฐ ์๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ๋์์ต๋๋ค.
๊ธฐ์กด
[ObservableProperty]
[property: JsonRequired]
[property: JsonPropertyName("name")]
private string? username;
์ ๋ฐ์ดํธ
[ObservableProperty]
[JsonRequired]
[JsonPropertyName("name")]
public partial string? Username { get; set; }
semi-auto property ์ฌ์ฉ
๋ค๋ง ์์ฌ์ด ์ ์ ๋ด๋ถ์ ์ผ๋ก ํ๋ ์์ฑ์ ์์ง ๋ฏธ์์ฑ ๊ธฐ๋ฅ์ธ seme-auto property๋ฅผ ์ฌ์ฉํ๊ธฐ๋๋ฌธ์ .NET 9 SDK ํ๊ฒฝ์์๋ <LangVersion>preview</LangVersion>
๊ตฌ๋ฌธ์ ์ถ๊ฐํด์ผ ์ฌ์ฉํ ์ ์๋ค๋ ์ ์
๋๋ค. (.NET 8์์๋ ํด๋น ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.)
// ์์ฑ ์ฝ๋ ์์
partial class MyViewModel
{
public partial string Name
{
get => field;
set => SetProperty(ref field, value);
}
public partial bool IsEnabled
{
get => field;
set => SetProperty(ref field, value);
}
}
์ผ๋ฐ ํ๋๋ก ์์ฑํ๋ ๋ฐฉ์์ด์๋ค๋ฉด C# 13 ์ ์ฉ ๋ง์ผ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ์ํ
๋ฐ production code์ preview
๊ตฌ๋ฌธ ์ ์ฉ์ ์กฐ๊ธ ๊บผ๋ ค์ง๋ ๋ถ๋ถ์
๋๋ค.
์ด๋ฌํ ์์ฌ์์ ์์ง๋ง ์ด์ ์ ํ๋ ๊ธฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ๋นํด์ ๋์ฑ ๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ ์ผ๋ก MVVM ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ ๊ฒ์ผ๋ก ๊ธฐ๋๋ฉ๋๋ค.