FluentValidation - 仅当值不为空时检查值是表达式

Posted

技术标签:

【中文标题】FluentValidation - 仅当值不为空时检查值是表达式【英文标题】:FluentValidation - Check value is an expression only if the value is not null 【发布时间】:2021-12-21 13:22:15 【问题描述】:

我正在尝试验证 Cron 表达式仅在属性不为空时才有效

我的代码是这样的,

 RuleFor(team => team.PlayTimeSlot)
                .Must(IsValidSchedule)
                .When(team => !string.IsNullOrEmpty(team.PlayTimeSlot));

 public bool IsValidSchedule(string schedule)
        
        // Some Schedule validation logic
        

但是这不起作用。我错过了什么?

【问题讨论】:

这段代码很适合我。你能告诉我们你是如何测试它的吗?也许你需要string.IsNullOrWhiteSpace @RomanMarusyk 问题是该属性是一个可为空的字符串,而该方法只接受字符串。由于该方法正在调用第三方 dll,我无法更改其签名 如果您将其添加到问题中会很棒,因为代码看起来不错 【参考方案1】:

我会尝试将所有内容分成方法作为替代方法:

RuleFor(team => team.PlayTimeSlot)
        .When(playTimeValid)
        .Must(IsValidSchedule);

public bool isValidSchedule()

    return true

public bool playTimeValid(TeamModel team)

    if !string.isnullorempty(team.playtimeslot)
    return true

你能用你的代码试试吗?

【讨论】:

但是它是如何解决这个问题的呢?这是一样的

以上是关于FluentValidation - 仅当值不为空时检查值是表达式的主要内容,如果未能解决你的问题,请参考以下文章

Spring - 仅当值不为空时才设置属性

sql Oracle:仅当值存在时才从另一个表中插入值

当值为空时,我无法返回我想要的图像[关闭]

FluentValidation:检查两个字段之一是不是为空

如果术语不为空/空,如何仅执行 Observable?

GraphQL 查询:如果不为空,则仅包含字段