Entwicklung & Code
Neu in .NET 9.0 [29]: Verbesserung beim Source Generator für reguläre Ausdrücke
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.
Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.
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)