Générateurs de sources MVVM

À compter de la version 8.0, le kit d’outils MVVM inclut de nouveaux générateurs de sources Roslyn qui permettront de réduire considérablement le code réutilisable lors de l’écriture de code à l’aide de l’architecture MVVM. Ils peuvent simplifier les scénarios où vous devez configurer des propriétés observables, des commandes et bien plus encore. Si vous n’êtes pas familiarisé avec les générateurs de sources, vous pouvez en savoir plus ici. Voici une vue simplifiée de leur fonctionnement :

Roslyn source generators

Cela signifie que lorsque vous écrivez du code, le générateur du kit d’outils MVVM s’occupera désormais pour vous de générer du code supplémentaire en arrière-plan. Ce code sera ensuite compilé et inclus dans votre application, pour un résultat final exactement identique à celui dans lequel vous auriez écrit ce code supplémentaire manuellement, mais sans avoir à le faire ! 🎉

Par exemple, ne serait-il pas fantastique si au lieu d’avoir à configurer une propriété observable normalement :

private string? name;

public string? Name
{
    get => name;
    set => SetProperty(ref name, value);
}

Vous pourriez n’avoir qu’un champ annoté simple pour exprimer la même chose ?

[ObservableProperty]
private string? name;

Concernant la création d’une commande :

private void SayHello()
{
    Console.WriteLine("Hello");
}

private ICommand? sayHelloCommand;

public ICommand SayHelloCommand => sayHelloCommand ??= new RelayCommand(SayHello);

Et si nous pouvions n’avoir que notre méthode et rien d’autre ?

[RelayCommand]
private void SayHello()
{
    Console.WriteLine("Hello");
}

Avec les nouveaux générateurs de sources MVVM, tout cela est possible, et bien plus encore ! 🙌

Remarque

Les générateurs de sources peuvent être utilisés indépendamment des autres fonctionnalités du kit d’outils MVVM, et vous êtes libre de combiner des générateurs de source avec des API précédentes si nécessaire. Autrement dit, vous pouvez utiliser progressivement les générateurs de sources en commençant par les nouveaux fichiers et en terminant avec des fichiers plus anciens pour les utiliser afin de réduire la verbosité. Cependant, il n’est pas obligatoire d’utiliser toujours l’une ou l’autre approche dans une application ou un projet entier.

Les documents suivants expliquent exactement quelles sont les fonctionnalités incluses dans les générateurs MVVM et comment les utiliser :

Exemples

  • Consultez l’exemple d’application (pour plusieurs infrastructures d’interface utilisateur) pour voir le kit d’outils MVVM en action.
  • Vous trouverez également d’autres exemples dans les tests unitaires.