|
16.07.2026
13:02 Uhr
|
Neben mehr Einsatzgebieten für Discriminated Unions bietet die Preview weitere Möglichkeiten zur asynchronen Validierung und Neues für die Prozessverwaltung.

Union Types, die C#-Implementierung von Discriminated Unions mit dem neuen Schlüsselwort union, hat Microsoft in .NET 11.0 Preview 3 eingeführt. Mit der neu erschienenen Preview 6 können Entwicklerinnen und Entwickler Union Types nun an verschiedenen Stellen in .NET-Bibliotheken nutzen:
Das ist neu in .NET 11.0: Dr. Holger Schwichtenberg und weitere Experten präsentieren am 17. November 2026 auf der Online-Konferenz betterCode() .NET 11.0 die Änderungen für Entwicklerinnen und Entwickler. Tickets zum Frühbucherpreis sind im Online-Shop verfügbar.
Die in C# 14.0 eingeführten Erweiterungsblöcke mit dem Schlüsselwort extension für bestehende Klassen, die bisher nur Methoden, Properties und Operatoren ergänzen konnten, können nun in C# 15.0 auch Indexer zu bestehenden Klassen hinzufügen.
Das folgende Listing zeigt einen Erweiterungsblock in der Klasse ListExtensions, die zum generischen Typ List<T> einen Indexer hinzufügt, der Zeichenketten als Parameter entgegennimmt. Im Standard gibt es dort nur einen Indexer für Ganzzahlen.
Listing 1: Extension für List<T>, die einen Indexer mit einem Zeichenkettenparameter ergänzt
So verwendet man den neuen Indexer:
Microsoft hatte bereits in .NET 11.0 Preview 5 asynchrone Validierung in Blazor eingebaut. Nun in Preview 6 lässt sich die asynchrone Validierung auch außerhalb von Blazor in anderen Anwendungsarten nutzen. Dazu hat Microsoft die Klasse System.ComponentModel.DataAnnotations.Validator um die vier Methoden ValidateObjectAsync(), TryValidateObjectAsync(), ValidatePropertyAsync() und ValidateValueAsync() erweitert. Zuvor gab es nur Pendants ohne Async im Namen.
Zudem gibt es für asynchrone Validierungsregeln eine neue Basisklasse AsyncValidationAttribute in Ergänzung zur bestehenden Basisklasse ValidationAttribute. Das Listing zeigt einen aussagekräftigen Ausschnitt aus einem Beispiel:
Listing 2: Asynchrone Validierung
Das Listing gibt aus:
Gefundene Fehler: 2
Auch in ASP.NET Core Minimal Web-APIs ist nun asynchrone Validierung möglich. Dazu muss man, wie in .NET 10.0 eingeführt, im Startcode builder.Services.AddValidation() aufrufen. Danach können Entwicklerinnen und Entwickler Objekte mit asynchronen Validatoren verwenden, zum Beispiel die oben schon verwendete Klasse Rechnung:
Dieser HTTP-Request
führt dann zur Antwort:
Wenn der Aufruf AddValidation() vergessen wird, findet keine Validierung statt und es gibt für den Aufrufer auch keinen Laufzeitfehler, der auf die fehlende Validierung hinweist.
In den Release Notes werden die klassischen Controller-basierten Web-APIs nicht erwähnt. Ein Schnelltest ergab, dass dort in Preview 6 die Übergabe eines Objekts mit asynchroner Validierung zu einem Laufzeitfehler führt: „System.InvalidOperationException: Validate this attribute with IsValidAsync.“ Ebenso wenig funktionieren bislang Union Types in Operationen in Controller-basierten Web-APIs.
Seit .NET 8.0 können Entwicklerinnen und Entwickler mit ShortCircuit() beziehungsweise MapShortCircuit() bereits bei Web-APIs deklarieren, dass ein Endpunkt zur Leistungsoptimierung ohne Verwendung aller genutzten Middleware-Komponenten (etwa Authentifizierung, CORS, Protokollierung, Komprimierung oder Durchsatzbegrenzung) direkt aufgerufen werden soll. In .NET 11.0 kann man dies nun auch deklarativ mit der neuen Annotation [ShortCircuit] erreichen.
Das geht in Minimal Web-APIs
und ebenso in Controller-basierten Web-APIs:
ASP.NET-Core-basierte Web-APIs unterstützen seit .NET 11.0 Preview 2 die OpenAPI Specification in der Version 3.2. In .NET 10.0 war es Version 3.1. Vor Preview 6 war Version 3.2 nicht im Standard aktiv, sondern musste im Startcode aktiviert werden:
Am 16.6.2026 hat Microsoft bekanntgegeben, dass ab Preview 6 die Version 3.2 der Standard ist.
Eine Rückstufung auf Version 3.1 ist möglich:
Bei ASP.NET Core SignalR können Clients nun eine Verbindung abbrechen, auch wenn diese kein Streaming verwendet:
Microsoft hat bereits in Preview 4 und Preview 5 Erweiterungen für die Prozessverwaltung gebracht. Auch Preview 6 bietet hier Neuerungen: Entwicklerinnen und Entwickler können Prozesse nun direkt im Zustand „Suspended“ starten. Dafür gibt es in der Klasse ProcessStartInfo die neue Boolean-Eigenschaft StartSuspended und in der Klasse SafeProcessHandle die Methode Resume(), siehe Listing.
Listing 3: Einen Prozess ausgesetzt starten
Die Klasse SafeProcessHandle bietet außerdem die neuen Methoden Open() und TryOpen(), um einen Prozess anhand der ID direkt anzusprechen. In der Klasse Process gibt es die neue Methode TryGetProcessById(), die im Gegensatz zur bestehenden ProcessById() den Wert false liefert, anstatt eine Ausnahme auszulösen, wenn kein Prozess mit der angegebenen ID existiert.