Wie bereits erwähnt, führt der Aufruf einer Erweiterungsmethode mit einer Null-Referenz dazu, dass dieses Argument Null ist und nichts anderes passiert. Dies bringt uns auf die Idee, Erweiterungsmethoden zu verwenden, um Schutzklauseln zu schreiben.
Beispiele finden Sie in diesem Artikel: Wie man die zyklomatische Komplexität reduziert: Schutzklausel Die Kurzfassung lautet wie folgt:
public static class StringExtensions
{
public static void AssertNonEmpty(this string value, string paramName)
{
if (string.IsNullOrEmpty(value))
throw new ArgumentException("Value must be a non-empty string.", paramName);
}
}
Dies ist die Erweiterungsmethode der String-Klasse, die bei einer Null-Referenz aufgerufen werden kann:
((string)null).AssertNonEmpty("null");
Der Aufruf funktioniert nur deshalb gut, weil die Laufzeit die Erweiterungsmethode bei einer Null-Referenz erfolgreich aufrufen wird. Dann können Sie diese Erweiterungsmethode verwenden, um Guard-Klauseln ohne umständliche Syntax zu implementieren:
public IRegisteredUser RegisterUser(string userName, string referrerName)
{
userName.AssertNonEmpty("userName");
referrerName.AssertNonEmpty("referrerName");
...
}