当您需要比较对象的多个属性作为验证的一部分时,您需要一个类验证器。然后将属性应用于类,而不是属性。
我不认为有一个现有的可以做你想做的事,但是编写你自己的很容易。
这是一个代码大纲,大致向您展示您的验证器的外观
[AttributeUsage(AttributeTargets.Class)]
[ValidatorClass(typeof(ReferencedByValidator))]
public class GreaterThanOrEqualAttribute : EmbeddedRuleArgsAttribute, IRuleArgs
{
public GreaterThanOrEqualAttribute(string firstProperty, string secondProperty)
{
/// Set Properties etc
}
}
public class ReferencedByValidator : IInitializableValidator<GreaterThanOrEqualAttribute>
{
#region IInitializableValidator<ReferencedByAttribute> Members
public void Initialize(GreaterThanOrEqualAttribute parameters)
{
this.firstProperty = parameters.FirstProperty;
this.secondProperty = parameters.SecondProperty;
}
#endregion
#region IValidator Members
public bool IsValid(object value, IConstraintValidatorContext constraintContext)
{
// value is the object you are trying to validate
// some reflection code goes here to compare the two specified properties
}
#endregion
}
}