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
Linda HamiltonOriginal
2025-01-28 11:26:09773Durchsuche

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>

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!

Stellungnahme:
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