首页 > 后端开发 > C++ > 如何使用IvalidatableObject执行条件性属性验证?

如何使用IvalidatableObject执行条件性属性验证?

Linda Hamilton
发布: 2025-01-28 11:26:09
原创
772 人浏览过

How to Perform Conditional Property Validation Using IValidatableObject?

使用IvalidatableObject

掌握条件属性验证

接口是用于综合对象验证的强大工具,对于验证具有期间依赖性的复杂对象特别有用。 该接口允许验证取决于同一对象中其他属性的值。 但是,将其与单个属性验证属性(例如

IValidatableObject)相结合需要仔细考虑。 [Required][Range]方法提供了执行这些条件检查的机制。 假设您只有在

属性为真时才需要验证

>和IValidatableObject.Validate()。 您将如何实现此处:Prop1 Prop2 至关重要的是,当使用Enable>时,将

参数设置为
<code class="language-csharp">public class ValidateMe : IValidatableObject
{
    [Required]
    public bool Enable { get; set; }

    [Range(1, 5)]
    public int Prop1 { get; set; }

    [Range(1, 5)]
    public int Prop2 { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (!Enable)
        {
            return Enumerable.Empty<ValidationResult>();
        }

        var validationResults = new List<ValidationResult>();

        // Add conditional validation rules here.  For example:
        if (Prop1 < 1 || Prop1 > 5)
        {
            validationResults.Add(new ValidationResult("Prop1 must be between 1 and 5", new[] { nameof(Prop1) }));
        }
        if (Prop2 < 1 || Prop2 > 5)
        {
            validationResults.Add(new ValidationResult("Prop2 must be between 1 and 5", new[] { nameof(Prop2) }));
        }

        return validationResults;
    }
}</code>
登录后复制
>。这可以防止框架自动验证具有

> Validator.TryValidateObject()的属性的属性,从而确保您的条件逻辑在validateAllProperties>中优先。 这允许在单个财产验证与有条件的,交叉特性验证之间进行干净的关注点。

以上是如何使用IvalidatableObject执行条件性属性验证?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板