10 Apr 2023 - Matthias Voigt
Mit .NET 6 hat Microsoft die Nutzung von Source Generators weiter ausgebaut und um nützliche Funktionen wie Regex Source Generators und Logging Source Generators erweitert. Diese neuen Features bieten Entwicklern leistungsstarke Werkzeuge, um die Effizienz und Lesbarkeit ihres Codes zu verbessern. In diesem Artikel werfen wir einen Blick auf diese beiden neuen Features und wie sie in der Praxis eingesetzt werden können.
Regex Source Generators ermöglichen es, reguläre Ausdrücke zur Kompilierzeit zu generieren und zu optimieren. Dies kann die Leistung von Anwendungen erheblich verbessern, da der reguläre Ausdruck nicht mehr zur Laufzeit kompiliert werden muss.
Um einen Regex Source Generator zu verwenden, muss die System.Text.RegularExpressions.Generators
-Bibliothek eingebunden werden:
using System.Text.RegularExpressions;
[RegexGenerator(@"^\d{4}-\d{2}-\d{2}$")]
public partial class DateRegex : Regex
{
}
In diesem Beispiel wird ein Regex Source Generator verwendet, um einen regulären Ausdruck für das Format YYYY-MM-DD
zu erstellen. Der Generator erstellt eine kompilierte Version des regulären Ausdrucks, die zur Laufzeit verwendet werden kann.
Logging Source Generators bieten eine effiziente Möglichkeit, Logging in .NET-Anwendungen zu implementieren. Sie ermöglichen die Erstellung von stark typisierten Logging-Methoden, die zur Laufzeit keine zusätzlichen Reflection-Kosten verursachen.
Hier ist ein Beispiel, wie ein Logging Source Generator verwendet wird:
using Microsoft.Extensions.Logging;
public static partial class MyLoggerExtensions
{
[LoggerMessage(EventId = 0, Level = LogLevel.Information, Message = "Starting process {ProcessName}")]
public static partial void LogProcessStart(this ILogger logger, string processName);
}
public class MyService
{
private readonly ILogger<MyService> _logger;
public MyService(ILogger<MyService> logger)
{
_logger = logger;
}
public void StartProcess(string processName)
{
_logger.LogProcessStart(processName);
}
}
In diesem Beispiel wird eine stark typisierte Logging-Methode LogProcessStart
erstellt. Diese Methode wird vom Source Generator zur Kompilierzeit generiert und optimiert.
Die Einführung von Regex und Logging Source Generators in .NET 6 bietet Entwicklern leistungsstarke Werkzeuge zur Verbesserung der Effizienz und Lesbarkeit ihres Codes. Durch die Kompilierung von regulären Ausdrücken und die Erstellung von stark typisierten Logging-Methoden zur Kompilierzeit können Anwendungen schneller und fehlerfreier werden.
Es lohnt sich, diese neuen Features in zukünftigen Projekten zu erkunden und zu nutzen, um von den Leistungs- und Sicherheitsvorteilen zu profitieren.
Für weitere Details und eine ausführliche Anleitung besuche die offizielle Microsoft-Dokumentation.