Как стать автором
Обновить

Анонсирован выпуск .NET Community Toolkit 8.0

Время на прочтение3 мин
Количество просмотров4.5K

.NET Community Toolkit - это коллекция классов-хелперов и API, которые могут использовать все .NET - разработчики и которые не зависят от конкретной платформы пользовательского интерфейса.

Toolkit поддерживается и публикуется Microsoft и является частью .NET Foundation.

.NET Community Toolkit - это наследник Windows Community Toolkit. Его появление разработчики объясняют следующим образом: со временем росло число библиотек API, использующих .NET и при этом не рассчитанных на работу с Windows. Поэтому было принято решение выделить отдельный проект, чтобы иметь возможность развиваться независимо и быть доступным для .NET-разработчиков не для Windows.

Так как последняя версия Windows Community Toolkit перед выделением нового проекта была 7.1.x, то было решено первый релиз .NET Community Toolkit обозначить как 8.0.0. В дальнейшем оба проекта будут развиваться и версионироваться независимо. 

Библиотеки, входящие в .NET Community Toolkit:

  • CommunityToolkit.Common

  • CommunityToolkit.Mvvm (aka “Microsoft MVVM Toolkit”)

  • CommunityToolkit.Diagnostics

  • CommunityToolkit.HighPerformance

Одним из самых важных компонентов Toolkit'a является MVVM Toolkit. В его основе лежит MVVMLight, ранее крайне популярная библиотека для разработки приложений с использованием паттерна MVVM (в настоящий момент не поддерживается). Для тех, кто до сих пор использует MVVMLight, есть план перехода на Microsoft MVVM Toolkit.

В двух словах о новых возможностях в версии 8.0.0 в плане именно MVVM Toolkit'a.

Заявлено интенсивное использований генераторов кода (source generators), что позволит сократить количество boilerplate-кода.

при объявлении и реализации Commands:
было:
private IRelayCommand<User> greetUserCommand;

public IRelayCommand<User> GreetUserCommand => greetUserCommand ??= new RelayCommand<User>(GreetUser);

private void GreetUser(User user)
{
    Console.WriteLine($"Hello {user.Name}!");
}

стало:
[RelayCommand]
private void GreetUser(User user)
{
    Console.WriteLine($"Hello {user.Name}!");
}

при объявлении и реализации Observable properties:
было:
private string? firstName;

public string? FirstName
{
    get => firstName;
    set
    {
        if (SetProperty(ref firstName, value))
        {
            OnPropertyChanged(nameof(FullName));
            GreetUserCommand.NotifyCanExecuteChanged();
        }
    }
}

private string? lastName;

public string? LastName
{
    get => lastName;
    set
    {
        if (SetProperty(ref lastName, value))
        {
            OnPropertyChanged(nameof(FullName));
            GreetUserCommand.NotifyCanExecuteChanged();
        }
    }
}

public string? FullName => $"{FirstName} {LastName}";

стало:
[ObservableProperty]
[NotifyPropertyChangedFor(nameof(FullName))]
[NotifyCanExecuteChangedFor(nameof(GreetUserCommand))]
private string? firstName;

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(FullName))]
[NotifyCanExecuteChangedFor(nameof(GreetUserCommand))]
private string? lastName;

public string? FullName => $"{FirstName} {LastName}";

Также при использовании атрибута [ObservableProperty] MVVM Toolkit сгенерирует два метода: On<PROPERTY_NAME>Changing и On<PROPERTY_NAME>Changed

Таким образом, конструкция вида

[ObservableProperty]
private string name;

partial void OnNameChanging(string name)
{
    Console.WriteLine($"The name is about to change to {name}!");
}

partial void OnNameChanged(string name)
{
    Console.WriteLine($"The name just changed to {name}!");
}

развернётся в

public string Name
{
    get => name;
    set
    {
        if (!EqualityComparer<string>.Default.Equals(name, value))
        {
            OnNameChanging(value);
            OnPropertyChanging();
            name = value;
            OnNameChanged();
            OnPropertyChanged();
        }
    }
}

partial void OnNameChanging(string name);

partial void OnNameChanged(string name);

Ссылка на оригинальный анонс.

Ссылка на документацию.

Ссылка на демонстрационное приложение в Microsoft Store.

Теги:
Хабы:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Другие новости

Истории

Работа

Ближайшие события

19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн