2016-05-02 5 views
0

私はこのようなルールがあります。エンティティベースのルールにプロパティ名を追加しますか?

RuleFor(x => x).Must(MatchSomething).When(x => x.Children != null) 

private bool MatchSomething(Parent parent) 
{ 
    return parent.CountOfSomething == parent.Children.Count(x => x.ChildType == ChildType.EnumValue); 
} 

上記作品罰金は、しかし、上記のルールで、ValidationErrorPropertyNameは空です。

プロパティ名を渡す方法はありますか、それともプロパティに基づいて上記のルールを変更する必要がありますか?

答えて

1

Must()には、あなたが最初の引数として検証しているクラスを含めることができるというあなたの問題を解決するのに役立つオーバーロードがあります。だから、次のコードで「CountOfSomething」を表示するには、プロパティ名を取得できます。

class ParentValidator : AbstractValidator<Parent> 
{ 
    public ParentValidator() 
    { 
     RuleFor(x => x.CountOfSomething).Must(MatchSomething).When(x => x.Children != null); 
    } 

    private bool MatchSomething(Parent parent, int countOfSomething) 
    { 
     return countOfSomething == parent.Children.Count(x => x.ChildType == ChildType.EnumValue); 
    } 
} 

私は、パラメータとして「CountOfSomething」を渡す方法を知らないが、上記うまくいけばかなり速いコードの修正です!

関連する問題