ivalidatableObjectを使用した.NETでの条件付き検証
インターフェイスは、クロスプロパティチェックを含む.NETで包括的なオブジェクト検証を実行する強力な方法を提供します。ただし、特定の条件に基づいて検証ルールを選択的に無視するのは難しい場合があります。 この例は、条件付きプロパティ検証を効果的に実現する方法を示しています。
これが実装を示すコードスニペットです:IValidatableObject
プロパティを使用して検証を制御します。
がtrueの場合、<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 サイトの他の関連記事を参照してください。