ホームページ > バックエンド開発 > 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>
ログイン後にコピー
が偽の場合のような属性を使用してプロパティを自動的に検証することを防ぎ、

の条件付きロジックが優先されるようにします。 これにより、個々のプロパティ検証と条件付きクロスプロパティの検証との間の懸念のきれいな分離が可能になります。

以上がivalidatableObjectを使用して条件付きプロパティ検証を実行する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート