Diğerlerinin de işaret ettiği gibi, null referansta bir uzatma yöntemi çağırmak bu argümanın null olmasına neden olur ve özel bir şey olmaz. Bu, koruma cümleleri yazmak için genişletme yöntemlerini kullanma fikrini doğurur.
Örnekler için bu makaleyi okuyabilirsiniz: Siklomatik Karmaşıklığı Azaltma: Guard Clause Kısa sürüm şudur:
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);
}
}
Bu, null başvurusunda çağrılabilen dize sınıfı uzantı yöntemidir:
((string)null).AssertNonEmpty("null");
Çağrı, yalnızca çalışma zamanı uzantı yöntemini null başvuruda başarıyla çağıracağı için iyi çalışır. Ardından, dağınık sözdizimi olmadan koruma cümleleri uygulamak için bu uzantı yöntemini kullanabilirsiniz:
public IRegisteredUser RegisterUser(string userName, string referrerName)
{
userName.AssertNonEmpty("userName");
referrerName.AssertNonEmpty("referrerName");
...
}
Cannot perform runtime binding on a null reference
.