无法将方法组转换为func <long,bool>

时间:2019-07-28 09:12:40

标签: c# fluentvalidation

我正在尝试使用fluentvalidation验证图钉,以确保哪种用户类型与现有图钉匹配。 AppDbContext是从dbcontext(实体框架)继承的上下文类。调用isOldPin方法时出现此语法错误。如果PinCodeOld数据类型为字符串,则不会出现此错误。但是,如果PinCodeOld数据类型很长,则会出现此错误。

 public class ChangePinValidator : AbstractValidator<VMPinChange>
{
    private readonly AppDbContext db = new AppDbContext();
    public ChangePinValidator()
    {
        RuleFor(b => b.PinCodeOld).Must(isOldPin).WithMessage("Invalid current pin code.");
        RuleFor(b => b.PinCodeNew).Equal(b => b.PinCodeConfirmation)
            .WithMessage("New pin code is not same with confirmed new pin code.");
    }

    private bool isOldPin(string _currentPin)
    {
        bool isMatch = db.BankAccounts.Any(b => b.PinCode.Equals(_currentPin));

        return isMatch;
    }
}

1 个答案:

答案 0 :(得分:1)

问题是这样的:

RuleFor(b => b.PinCodeOld).Must(isOldPin)

如果PinCodeOld很长,则Must方法将期望采用long值作为输入,但是您的方法采用string的方法。如果您需要将其设置为long,则还需要将isOldPin更改为long

相关问题