Im Rahmen von .NET 8.0 hat Microsoft die Annotationsklassen im Namensraum System.ComponentModel.DataAnnotations erweitert und ergänzt.
Die Datenannotationen im Namensraum System.ComponentModel.DataAnnotations existieren bereits seit dem klassischen .NET Framework:
Die ersten Datenannotationen, wie zum Beispiel [RegularExpression], [Range] und [DataType], wurden bereits in .NET Framework 3.5 eingeführt.
Weitere Datenannotationen folgten in .NET Framework 4.0, darunter [Display] und [Editable].
Dann kamen weitere Datenannotationen in .NET Framework 4.5, zu denen [MaxLength], [Compare], [CreditCard] und [Phone] gehören.
Diese Datenannotationen werden auf Klassen, Fields oder Properties angewendet und dienen der Spezifikation der Darstellung (z. B. [Display], [Editable]) oder der Validierung von Werten (z. B. [RegularExpression], [Compare], [Range], [Phone] und [CreditCard]).
GUI-Steuerelemente müssen entsprechende Annotationen berücksichtigen. Es gibt aber nur wenige Steuerelemente, die Darstellungsannotationen beachten. Meist erstellen .NET-Entwickler:innen ihre eigenen Steuerelemente, die basierend auf den in den Annotationen abgelegten Metadaten eine grafische Benutzeroberfläche während der Laufzeit „on the fly“ erzeugen.
Im Fall von Validierungsannotationen gibt es mehr Steuerelemente, die diese Annotationen berücksichtigen, wie zum Beispiel <InputText>, <InputNumber> und <InputDate> in Blazor. Validierung kann auch unabhängig von einem Steuerelement im Programmcode durchgeführt werden. Hierzu stehen die Klassen ValidationContext, Validator, ValidationResult und ValidationException zur Verfügung.
Microsoft hat in .NET 8.0 drei neue Annotationsklassen hinzugefügt:
Die neue Annotation [Length] kann verwendet werden, um die Mindest- und Maximallänge von Objektmengen und Zeichenketten festzulegen.
Die [Base64String]-Annotation prüft nun, ob eine Zeichenkette Base64-codiert ist.
Mit Hilfe der [AllowedValues]- und [DeniedValues]-Annotationen können Listen erlaubter bzw. verbotener Werte für Eigenschaften eines Objekts angegeben werden. Das funktioniert allerdings nur mit Werten in einzelnen Properties oder Fields; auf Objektmengen angewendet wirken diese beiden Annotationen leider nicht.
Zudem hat Microsoft eine Validierungsannotationsklasse in .NET 8.0 erweitert: Die [Range]-Annotation verfügt nun über die zusätzlichen...