csharp / expert
Snippet
Defensive Programmierung mittels compiler-injizierter Metadaten
Compiler-Attribute wie CallerMemberName und CallerFilePath ermöglichen es dem C#-Compiler, automatisch Metadaten in Methodenaufrufe einzufügen. Dies ist essenziell für fortgeschrittene Fehlerbehandlung und Tests, da es präzisen Kontext für Fehler in Produktionslogs liefert, ohne die Performance-Kosten einer vollständigen Stack-Trace-Erfassung.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System.Runtime.CompilerServices;public class Validator{public static void AssertNotNull(object val,[CallerMemberName] string member = "",[CallerFilePath] string file = "",[CallerLineNumber] int line = 0){if (val == null){throw new ArgumentNullException($"Null detected in {member} at {file}:{line}");}}}
Erklärung
1
[CallerMemberName] string member = ""
Weist den Compiler an, den Namen der Methode oder Eigenschaft bereitzustellen, die diese Assertion aufgerufen hat.
2
throw new ArgumentNullException($"Null detected in {member} at {file}:{line}");
Erzeugt eine aussagekräftige Fehlermeldung unter Verwendung der injizierten Compile-Zeit-Metadaten.