我注意到这段代码在我的构造函数中出现了很多:
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 不起作用,因为 Tuple 的 GTP 不是协变的(即使 IEnumerable 的 GTP 是协变的)。有任何想法吗?