Корпоративная библиотека проверяет все наборы правил - PullRequest
0 голосов
/ 18 января 2011

У меня есть вопрос проверки объектов с использованием Microsoft Enterprise Library.
У меня есть несколько валидаторов для разных полей.Но мне нужно, чтобы разные поля в объекте были в разных наборах правил (как в этом примере):

public class Category
{
[NotNullValidator(MessageTemplate="The category name cannot be null", Ruleset="NameRuleset")]
[StringLengthValidator(1, 200, MessageTemplate = "The category name must be between {3} and {5} characters", Ruleset = "NameRuleset")]
public string Name { get; set; }

[NotNullValidator(MessageTemplate = "The category description cannot be null", Ruleset = "DescriptionRuleset")]
[StringLengthValidator(1, 2000, MessageTemplate = "The category description must be between {3} and {5} characters", Ruleset = "DescriptionRuleset")]
public string Description { get; set; }
}

Вопрос в том, как проверить объект так, чтобы все наборы правил учитывались?

Одним из решений было бы это, но я не хочу постоянно передавать наборы правил в качестве параметров.

var result = Validation.Validate<Category>(category, new string[] { "NameRuleset", "DescriptionRuleset" });

И это будет проверять только набор правил по умолчанию (для моего примера,объект всегда будет действительным, даже если его имя длиннее 200 символов)

var result = Validation.Validate<Category>(category);

Так есть ли способ проверить все наборы правил без указания их вручную для каждого вызова Validation.Validate()?

1 Ответ

0 голосов
/ 18 января 2011

Вы можете иметь несколько наборов правил в ваших свойствах. Таким образом, можно ввести CombinedRuleset, который вы используете для свойств Name и Description, поверх существующих наборов правил. Это, однако, требует дублирования всех ваших правил проверки, что является запахом кода.

Если вы хотите, чтобы функция присоединения к набору правил была добавлена ​​в EntLib в будущем выпуске, предложите здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...