Maison > développement back-end > C++ > Comment effectuer la validation des propriétés conditionnelles à l'aide de ivalidAtableObject?

Comment effectuer la validation des propriétés conditionnelles à l'aide de ivalidAtableObject?

Linda Hamilton
Libérer: 2025-01-28 11:26:09
original
770 Les gens l'ont consulté

How to Perform Conditional Property Validation Using IValidatableObject?

Validation de la propriété conditionnelle de maîtrise en utilisant ivalidAtableObject

L'interface IValidatableObject est un outil robuste pour la validation complète des objets, particulièrement utile pour valider des objets complexes avec des dépendances interprétères. Cette interface permet des validations qui dépendent des valeurs d'autres propriétés dans le même objet. Cependant, la combinaison de cela avec des attributs de validation de propriété individuels (comme [Required] ou [Range]) nécessite une attention particulière.

La méthode IValidatableObject.Validate() fournit le mécanisme pour effectuer ces contrôles conditionnels. Disons que vous devez valider Prop1 et Prop2 uniquement lorsque la propriété Enable est vraie. Voici comment vous implémentez ceci:

<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>
Copier après la connexion

Surtout, lors de l'utilisation de Validator.TryValidateObject(), définissez le paramètre validateAllProperties sur false. Cela empêche le cadre de valider automatiquement les propriétés avec des attributs comme [Range] lorsque Enable est faux, garantissant que votre logique conditionnelle dans Validate() a priorité. Cela permet une séparation propre des préoccupations entre la validation des propriétés individuelles et la validation conditionnelle de la proper d'établissement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal