使用 Enterprise Library 验证时,我在使用嵌套对象验证对象时应用规则集时遇到问题。如果我有以下对象
public class Person
{
[ObjectValidator]
[ObjectValidator(Ruleset = "A")]
public Address Address { get; set; }
}
public class Address
{
[StringLengthValidator(0, 32, MessageTemplate = "Invalid value '{0}' for {1}, Max length:{5}")]
public string Address1 { get; set; }
[StringLengthValidator(0, 32, MessageTemplate = "Invalid value '{0}' for {1}, Max length:{5}", Ruleset = "A")]
public string Address2 { get; set; }
}
现在,如果我尝试通过调用来验证对象
ValidationResults results = Validation.Validate(myPersonObject);
我按预期得到了我的默认验证,即如果 Person.Address.Address1 太长它会触发但 Person.Address.Address2 被忽略,这符合预期。
但是,如果我尝试调用我对规则集“A”的验证,如下所示
ValidationResults results = Validation.Validate(myPersonObject, "A");
尽管我已经指定了规则集,但我总是得到与之前的验证调用相同的结果。有什么建议么?