Neu in .NET 9.0 [29]: Verbesserung beim Source Generator für reguläre Ausdrücke
Die Annotation [GeneratedRegex] lässt sich nicht mehr nur für Methoden, sondern auch für Properties verwenden.
(Bild: Pincasso/Shutterstock.com)
- Dr. Holger Schwichtenberg
Microsoft verwendet in .NET 9.0 das neue Sprachfeature "Partielle Properties" aus C# 13.0 und erlaubt im Source Generator für reguläre Ausdrücke, der vor zwei Jahren eingeführt wurde. Darüber habe ich in meiner Blogserie zu .NET 7.0 berichtet. Neu in .NET 9.0 ist, dass Entwicklerinnen und Entwickler die Annotation [GeneratedRegex] nun nicht mehr nur für Methoden, sondern auch Properties verwenden können.
Videos by heise
Folgendes Codebeispiel zeigt das Vorgehen am Beispiel der E-Mail-Adressen-Validierung:
using System.Text.RegularExpressions;
namespace NET9_Console.FCL90;
public partial class Checker_Alt // Partielle Klasse
{
[GeneratedRegex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*")] // ALT: Auf Methode
// Partielle Methode, die dann von SG implementiert wird
public partial Regex EMailRegEx();
}
public partial class Checker_Neu // Partielle Klasse
{
[GeneratedRegex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*")] // NEU: Auf Property
// Partielles Property mit Getter, der dann von SG implementiert wird
public partial Regex EMailRegEx { get; }
}
public class FCL9_RegExSourceGenerator
{
public void Run()
{
CUI.Demo(nameof(FCL9_RegExSourceGenerator));
// Aufruf der partiellen Methode
Console.WriteLine(new Checker_Alt().EMailRegEx().IsMatch("max@mustermann.de"));
// Aufruf des partiellen Properties
Console.WriteLine(new Checker_Neu().EMailRegEx.IsMatch("max@mustermann.de"));
}
}
Der Source Generator erzeugt beim Kompilieren zur Entwicklungszeit den Inhalt der Methode und den Getter des partiellen Properties. Den generierten Programmcode findet man in der Datei RegexGenerator.g.cs im Ordner C:\Users\Benutzername\AppData\Local\Temp\VSGeneratedDocuments\GUID.
(rme)