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?

Respuestas a la pregunta(12)

Su respuesta a la pregunta