Я заметил, что этот код очень много выделяется в моих конструкторах:
if (someParam == null) throw new ArgumentNullException("someParam");
if (someOtherParam == null) throw new ArgumentNullException("someOtherParam");
...
У меня есть несколько конструкторов, где вводится несколько вещей и все они должны быть не равными нулю. Может ли кто-нибудь подумать о способе упорядочения этого? Единственное, о чем я могу думать, это следующее:
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);
}
}
Однако использование этого будет выглядеть примерно так:
ExceptionHelper.CheckAndThrowArgNullEx(new [] {
new KeyValuePair<string, object>("someParam", someParam),
new KeyValuePair<string, object>("someOtherParam", someOtherParam),
... });
... что на самом деле не способствует упорядочению кода. Tuple.Create() вместо KVP не работает, потому что GTP файлы Tuple не являются ковариантными (хотя IEnumerable GTP есть). Есть идеи?