私はこのコードが私のコンストラクターでたくさん現れることに気づきました:
if (someParam == null) throw new ArgumentNullException("someParam");
if (someOtherParam == null) throw new ArgumentNullException("someOtherParam");
...
いくつかのものが注入され、すべてnull以外でなければならないコンストラクターがいくつかあります。誰かがこれを合理化する方法を考えることができますか?私が考えることができる唯一のことは次のとおりです。
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),
... });
...これはコードの合理化にはあまり役立ちません。タプルのGTPは共変ではないため(IEnumerableのGTPは共変ですが)、KVPの代わりにTuple.Create()は機能しません。何か案は?