使用FluentValidation检查字符串是否大于零

时间:2019-11-05 15:53:32

标签: fluentvalidation

我已经开始在WPF项目上使用FluentValidation,直到现在我以一种简单的方式使用它来检查字段是否已填充或小于n个字符。

现在,我要检查插入的值(这是一个字符串...该死的旧代码)是否大于0。有没有简单的方法可以使用

进行转换?
RuleFor(x=>x.MyStringField).Somehow().GreaterThen(0) ?

预先感谢

2 个答案:

答案 0 :(得分:3)

另一种解决方案:

RuleFor(a => a.MyStringField).Must(x => int.TryParse(x, out var val) && val > 0)
.WithMessage("Invalid Number.");

答案 1 :(得分:1)

只需编写这样的自定义验证器

public class Validator : AbstractValidator<Test>
    {
        public Validator()
        {
            RuleFor(x => x.MyString)
                .Custom((x, context) =>
                {
                    if ((!(int.TryParse(x, out int value)) || value < 0))
                    {
                        context.AddFailure($"{x} is not a valid number or less than 0");
                    }
                });
        }
    }

在需要验证的地方进行此操作

var validator = new Validator();
var result = validator.Validate(test);
Console.WriteLine(result.IsValid ? $"Entered value is a number and is > 0" : "Fail");