.Net Community Toolkit 8.1: Mehr Tempo für MVVM-Quellcode-Generatoren

Mit dem Toolkit-Update liefert Microsoft lang ersehnte Funktionen und verspricht höhere Performance für die Arbeit mit dem Oberflächen-Entwurfsmuster MVVM.

In Pocket speichern vorlesen Druckansicht

(Bild: Arthimedes / Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Matthias Parbel

Microsoft hat Version 8.1 des .Net Community Toolkit offiziell fertiggestellt. Das neue Release bietet neben Anpassungen an .NET 7 und C# 11 sowie einer Reihe von Verbesserungen und Fehlerbereinigungen außerdem von der Entwickler-Community lang ersehnte Funktionen wie benutzerdefinierte Attribute für [ObservableProperty]. Darüber hinaus sollen die Quellcode-Generatoren des MVVM-Toolkit (Model View ViewModel) laut Ankündigung eine "signifikant" höhere Performance liefern.

Zu den von Entwicklerinnen und Entwicklern am meisten nachgefragten Features im .Net Community Toolkit zählen benutzerdefinierte Eigenschaftsmerkmale für [ObservableProperty]. Die ließen sich bisher nur manuell für den Quellcode-Generator des MVVM-Toolkit setzen. Für die Umsetzung des Features im neuen Release hat sich das Microsoft-Team entschlossen, auf die bestehende property-Syntax in C# zurückzugreifen. Dadurch eröffnet sich die Möglichkeit, Attribute zu markieren, die auf generierte Eigenschaften übertragen werden, ohne dafür zusätzliche Attribute einführen zu müssen. Der Rückgriff auf die C#-Syntax habe zudem etwaige Probleme beim Annotieren von Attributen ausgeräumt, die nur auf Eigenschaften und nicht auf Felder abzielen können.

Benutzerdefinierte Attribute lassen sich nach dem Toolkit-Update nun wie folgt festlegen:

[ObservableProperty]
[property: JsonPropertyName("responseName")]
[property: JsonRequired]
private string? _name;

Aus diesem Code wird dann folgende Property generiert:

[JsonPropertyName("responseName")]
[JsonRequired]
public string? Name
{
    get => _name;
    set
    {
        if (!EqualityComparer<string?>.Default.Equals(_name, value))
        {
            OnPropertyChanging("Name");
            OnNameChanging(value);

            _name = value;

            OnPropertyChanged("Name");
            OnNameChanged(value);
        }
    }
}

partial void OnNameChanging(string? value);
partial void OnNameChanged(string? value);

Version 8.1 des .Net Community Toolkit greift Entwicklerinnen und Entwicklern gezielter unter die Arme, um den Einsatz des MVVM-Toolkit zu optimieren. Anstatt wie bisher lediglich Hinweise zu Features auszugeben, die falsch verwendet werden und somit zu einem Fehler führen könnten, stehen nun dedizierte Analysatoren zur Verfügung. Sie sollen gezielt Empfehlungen zum Verbessern des Codes liefern und wie sich häufige Fehler vermeiden lassen.

In Abstimmung mit dem Roslyn-Team haben die Toolkit-Entwickler eine Reihe von Optimierungsmaßnahmen auf den Weg gebracht, die den MVVM-Quellcode-Generatoren zu mehr Leistung verhelfen sollen. Unter anderem wurden die Generatoren zum Abgleichen von Attributen auf die neue High-Level-API von Roslyn umgestellt. Davon profitieren insbesondere Generatoren, die über bestimmte Attribute auslösen – wie beispielsweise [ObservableProperty].

Um die Speicherzuweisung insgesamt abzusenken, wurden sämtliche inkrementellen Modelle und Pipelines überarbeitet. Das Team hat darüber hinaus nahezu alle Diagnosen in Diagnostics Analyzers ausgelagert. Diese laufen prozessunabhängig und unabhängig von den Quellcode-Generatoren, sodass sich der Overhead bei der Eingabe reduziert.

Weitergehende Informationen zu den Verbesserungen in .Net Community Toolkit 8.1 wie etwa auch der vollständige Support für .Net 7 und C# 11 führt der Blogbeitrag aus. Eine Übersicht aller Änderungen findet sich im Changelog auf GitHub.

(map)