ArgumentNullException - como simplificar?
Eu notei que esse código surge muito nos meus construtores:
if (someParam == null) throw new ArgumentNullException("someParam");
if (someOtherParam == null) throw new ArgumentNullException("someOtherParam");
...
Eu tenho alguns construtores onde várias coisas são injetadas e todas devem ser não nulas. Alguém pode pensar em uma maneira de agilizar isso? A única coisa em que consigo pensar é o seguinte:
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);
}
}
No entanto, o uso disso seria algo como:
ExceptionHelper.CheckAndThrowArgNullEx(new [] {
new KeyValuePair<string, object>("someParam", someParam),
new KeyValuePair<string, object>("someOtherParam", someOtherParam),
... });
... o que realmente não ajuda a agilizar o código. Tuple.Create () em vez de KVPs não funciona porque os GTPs da Tuple não são covariantes (embora o GTP do IEnumerable seja). Alguma ideia?