Como otros señalaron, llamar a un método de extensión en referencia nula hace que este argumento sea nulo y no suceda nada más. Esto da lugar a la idea de utilizar métodos de extensión para escribir cláusulas de protección.
Puede leer este artículo para ver ejemplos: Cómo reducir la complejidad ciclomática: cláusula de protección La versión corta es esta:
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);
}
}
Este es el método de extensión de clase de cadena que se puede invocar en referencia nula:
((string)null).AssertNonEmpty("null");
La llamada funciona bien solo porque el tiempo de ejecución llamará con éxito al método de extensión con referencia nula. Luego puede usar este método de extensión para implementar cláusulas de protección sin una sintaxis desordenada:
public IRegisteredUser RegisterUser(string userName, string referrerName)
{
userName.AssertNonEmpty("userName");
referrerName.AssertNonEmpty("referrerName");
...
}
Cannot perform runtime binding on a null reference
.