ホームページ > バックエンド開発 > C++ > .NETでivalidatableObjectを使用して条件付きプロパティ検証を実装する方法は?

.NETでivalidatableObjectを使用して条件付きプロパティ検証を実装する方法は?

Susan Sarandon
リリース: 2025-01-28 11:41:39
オリジナル
866 人が閲覧しました

How to Implement Conditional Property Validation Using IValidatableObject in .NET?

ivalidatableObjectを使用した.NETでの条件付き検証

インターフェイスは、クロスプロパティチェックを含む.NETで包括的なオブジェクト検証を実行する強力な方法を提供します。ただし、特定の条件に基づいて検証ルールを選択的に無視するのは難しい場合があります。 この例は、条件付きプロパティ検証を効果的に実現する方法を示しています。

これが実装を示すコードスニペットです:IValidatableObject

このコードは、

プロパティを使用して検証を制御します。

がtrueの場合、> and
<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)
    {
        var results = new List<ValidationResult>();
        if (Enable)
        {
            // Conditionally validate Prop1 and Prop2
            Validator.TryValidateProperty(Prop1, new ValidationContext(this, null, null) { MemberName = "Prop1" }, results);
            Validator.TryValidateProperty(Prop2, new ValidationContext(this, null, null) { MemberName = "Prop2" }, results);

            // Add a custom conditional validation rule
            if (Prop1 > Prop2)
            {
                results.Add(new ValidationResult("Prop1 must be less than or equal to Prop2"));
            }
        }
        return results;
    }
}</code>
ログイン後にコピー
を使用して

およびEnableを使用して、Enable>>>>を保証するカスタムルールを使用して検証します。 Prop1メソッドが重要です。検証が失敗した場合にのみ検証エラーがProp2リストに追加されます。 この検証を利用するには、[Range]Prop1 Prop2 Validator.TryValidateProperty()results

を設定することが重要です。 これにより、

が条件付き検証ロジックをオーバーライドすることを防ぎます。 このアプローチは、

と、.NETアプリケーションで柔軟で堅牢なオブジェクト検証の条件付き検証を組み合わせています。

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

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