Heim > Backend-Entwicklung > C++ > Wie führe ich eine bedingte Eigenschaftsvalidierung mit IcalIdatableObject durch?

Wie führe ich eine bedingte Eigenschaftsvalidierung mit IcalIdatableObject durch?

Linda Hamilton
Freigeben: 2025-01-28 11:26:09
Original
772 Leute haben es durchsucht

How to Perform Conditional Property Validation Using IValidatableObject?

Beherrschung der bedingten Eigenschaftsvalidierung mit IvalIdatableObject

Die IValidatableObject -Schinschnittstelle ist ein robustes Instrument für eine umfassende Objektvalidierung, insbesondere nützlich, um komplexe Objekte mit Abhängigkeiten mit interpropertischen Abhängigkeiten zu validieren. Diese Schnittstelle ermöglicht Validierungen, die von den Werten anderer Eigenschaften innerhalb desselben Objekts abhängen. Die Kombination dieser Eigenschaften der Eigenschaftsvalidierung (wie [Required] oder [Range]) erfordert jedoch eine sorgfältige Überlegung.

Die IValidatableObject.Validate() -Methode liefert den Mechanismus, um diese bedingten Überprüfungen durchzuführen. Nehmen wir an, Sie müssen nur dann Prop1 und Prop2 validieren, wenn die Eigenschaft Enable wahr ist. So würden Sie dies implementieren:

<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>
Nach dem Login kopieren

entscheidend, wenn Sie Validator.TryValidateObject() verwenden, setzen Sie den Parameter validateAllProperties auf false. Dadurch wird verhindert, dass das Framework die Eigenschaften automatisch mit Attributen wie [Range] validiert, wenn Enable falsch ist, und sicherzustellen, dass Ihre bedingte Logik in Validate() Vorrang hat. Dies ermöglicht eine saubere Trennung von Bedenken zwischen individueller Eigentumsvalidierung und bedingter, querer Eigentumsvalidierung.

Das obige ist der detaillierte Inhalt vonWie führe ich eine bedingte Eigenschaftsvalidierung mit IcalIdatableObject durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage