.NET Community Toolkit 8.4.0 ์ถœ์‹œ

.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 ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€๋ฉ๋‹ˆ๋‹ค.

8๊ฐœ์˜ ์ข‹์•„์š”