ArgumentNullException - ¿Cómo simplificar?
He notado que este código aparece mucho en mis constructores:
if (someParam == null) throw new ArgumentNullException("someParam");
if (someOtherParam == null) throw new ArgumentNullException("someOtherParam");
...
Tengo algunos constructores donde se inyectan varias cosas y todas deben ser no nulas. ¿Alguien puede pensar en una forma de racionalizar esto? Lo único que se me ocurre es lo siguiente:
public static class ExceptionHelpers
{
public static void CheckAndThrowArgNullEx(IEnumerable<KeyValuePair<string, object>> parameters)
{
foreach(var parameter in parameters)
if(parameter.Value == null) throw new ArgumentNullException(parameter.Key);
}
}
Sin embargo, el uso de eso sería algo como:
ExceptionHelper.CheckAndThrowArgNullEx(new [] {
new KeyValuePair<string, object>("someParam", someParam),
new KeyValuePair<string, object>("someOtherParam", someOtherParam),
... });
... lo que realmente no ayuda a racionalizar el código. Tuple.Create () en lugar de KVPs no funciona porque los GTP de Tuple no son covariantes (a pesar de que el GTP de IEnumerable es). ¿Algunas ideas?