IValidatableObject中的Validate方法在所有场景下都不会返回ValidationResult
本文关键字:ValidationResult 返回 Validate 中的 方法 IValidatableObject | 更新日期: 2023-09-27 18:05:02
我一直在使用Validate方法进行一些我必须做的条件验证,今天当我这样做的时候,我开始认为我的Validate方法。签名为
IEnumerable<ValidationResult> Validate(ValidationContext validationContext);
但是当我实现它时,它不会在所有条件下返回验证结果的Enumerable。
现在我可能在这里错过了一些明显的东西,但通常编译器会抱怨所有的代码路径不返回值,但它永远不会为验证方法。
示例实现
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (IsPremiumCandidateSignup && SelectedProductId < 1)
{
yield return
new ValidationResult("Please choose a membership option",
new List<string> { "SelectedProductId" });
}
}
所以在这种情况下,它只会在if条件满足时返回。因此,如果有人能给我解释一下,或者指出一些资源,我可以阅读更多关于这方面的信息,我将不胜感激。
如果满足以下条件,它将返回一些东西:
if(IsPremiumCandidateSignup && SelectedProductId < 1)
所以如果不是高级注册,没有选择产品,它将不会返回任何东西