という事は承知しています IValidatableObject
は、プロパティを互いに比較できるようにオブジェクトを検証するために使用されることいます。
個別のプロパティを検証するための属性は引き続き必要ですが、特定のケースでは一部のプロパティの失敗を無視したいと思います。
以下の場合、それを間違って使用しようとしていますか?そうでない場合、これをどのように実装しますか?
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 (!this.Enable)
{
/* Return valid result here.
* I don't care if Prop1 and Prop2 are out of range
* if the whole object is not "enabled"
*/
}
else
{
/* Check if Prop1 and Prop2 meet their range requirements here
* and return accordingly.
*/
}
}
}