6

流暢な検証ライブラリで動的メッセージを使用してカスタム検証を構築しようとしています。

例えば ​​:

public class CreateProcessValidator : AbstractValidator<CreateProcessVM>
{
    public CreateProcessValidator()
    {
        RuleFor(x => x.ProcessFile).Must((x,e) => IsProcessFileValid(x.ProcessFile))).WithMessage("Parse failed with error : {0}");        
    }

    public bool IsProcessFileValid(HttpPostedFileBase file)
    {
        var errorMessage = "..."  // pass result to validaton message ?
        // logic
        return false;
    }
}

検証結果を渡す方法はありますか?

ありがとう

4

4 に答える 4

2

それを行う方法はありません。現在使用している複雑な検証メソッドを小さなメソッド (IsProcessFileValid1、IsProcessFileValid2、IsProcessFileValid3、...) に分割して、エラー メッセージをより細かく制御できるようにします。また、各メソッドは、再利用性を高めるために一度だけ検証する責任があります (単一の責任):

RuleFor(x => x.ProcessFile)
    .Must(IsProcessFileValid1)
    .WithMessage("Message 1")
    .Must(IsProcessFileValid2)
    .WithMessage("Message 2")
    .Must(IsProcessFileValid3)
    .WithMessage("Message 3");

Mustまた、メソッドを引数として直接渡すことができるため、ラムダを単純化した方法にも注意してください。

于 2013-04-09T13:31:33.683 に答える