當您需要比較對象的多個屬性作爲驗證的一部分時,您需要一個claass驗證器。該屬性然後應用於類,而不是屬性。
我不認爲有現成的人可以做你想做的事,但很容易寫出你自己的想法。
這裏是一個代碼大綱向您展示您的驗證可能看起來大概是什麼樣
[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
}
}
我認爲通過流暢的樣式映射可能會更容易完成此操作。你應該看看這些文章[這裏](http://fabiomaulo.blogspot.com/search/label/Validator)。 – 2011-05-17 11:54:35