Валидатор объекта блока приложения валидации не работает с наборами правил
Я боролся с этой проблемой, которую я первоначально думал, возможно, был связан с полиморфизмом / наследованием, влияющим на мою проверку, но я сузил это до этого...
Вот структура класса..
public class Employee {
[ObjectValidator(Ruleset = "A")]
public EmployeeName Name { get; set; }
public Employee()
{
Name = new EmployeeName();
}
}
public class EmployeeName
{
[StringLengthValidator(1,20,Ruleset = "A")]
public string First { get; set; }
public string Last { get; set; }
public EmployeeName()
{
First = string.Empty;
Last = string.Empty;
}
}
Тест:
[TestFixture]
public class ObjectValidationWithRulesets
{
[Test]
public void wont_validate_with_a_ruleset()
{
var person = new Employee()
{
Name = new EmployeeName()
{
First = string.Empty,
Last = string.Empty
}
};
var ruleSetValidator =
ValidationFactory.CreateValidator<Employee>("A");
var validationResults = ruleSetValidator.Validate(person);
Assert.That(!validationResults.IsValid,
"Validation with rulsets failed");
}
}
Этот тест проходит, если я удаляю удалить набор правил. Но как только набор правил будет применен, я не смогу правильно проверить объект.
Может кто-нибудь пролить некоторый свет на это?
Ура,
1 ответ
У меня тоже была эта проблема, но я не определил targetRuleSet в файле конфигурации. Я исправил проблему, исправив способ объявления атрибута ObjectValidator. Правильный синтаксис, который работал для меня, следующий
// Correct
[ObjectValidator("RuleSetA", Ruleset = "RuleSetA")]
В моем коде я ошибочно объявил это следующим образом
// Wrong syntax
[ObjectValidator(Ruleset = "RuleSetA")]