それぞれがエラー コードを返す一連の検証メソッドを実行するバリデータ クラスが必要です。エラーの重大度によっては、残りの検証を中止したい場合があります。各呼び出しの後に返されたエラー コードを確認し、残りの検証を実行しないこともできますが、これにより、メインの「駆動」ルーチンに多くの重複した混乱が追加されます。
そこで、これを処理する次のヘルパー ルーチンを作成しました...
public IList<Error> ValidateSet(InputType input,
params Func<InputType, IList<Error>>[] validations)
{
var errors = new List<Error>();
foreach (var validation in validations)
{
errors.AddRange(validation(input));
if (AbortValidations(errors))
break;
}
return errors;
}
これは以下のように呼び出され、うまく機能します...
var errors = new List<Error>();
errors.AddRange(
ValidateSet(input,
ValidateX,
ValidateY,
ValidateZ)
);
私が今抱えている問題は、一部の検証で、InputType の 1 つのパラメーター以外に追加のパラメーターが必要になることです。
この同じ有用な構造を維持する方法はありますか? 以前の検証で「中止」エラー コードが返された場合、残りの検証を実行したくないため、各検証の結果を単純に渡すことはできないことに注意してください (検証はデータを読み込むため、これはパフォーマンス要件です)。
ありがとう、ジョン