我一直在使用 Validate 方法进行一些我必须做的条件验证,今天当我这样做时,我开始考虑我的 validate 方法。签名是
IEnumerable<ValidationResult> Validate(ValidationContext validationContext);
但是当我实现它时,它不会在所有条件下返回一个可枚举的验证结果。
现在我可能在这里遗漏了一些明显的东西,但通常编译器会抱怨所有代码路径都不返回值,但它从来没有对 Validate 方法这样做。
示例实现
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (IsPremiumCandidateSignup && SelectedProductId < 1)
{
yield return
new ValidationResult("Please choose a membership option",
new List<string> { "SelectedProductId" });
}
}
所以在这种情况下,它只会在满足 if 条件时返回。因此,如果有人可以向我解释这一点或指出一些我可以阅读更多相关信息的资源,我将不胜感激。