Microsoftエンタープライズライブラリを使用してオブジェクトを検証する質問があります。
フィールドごとにバリデータがあります。 しかし、私は(この例のように)異なるルールセットにあるようにオブジェクト内の異なるフィールドが必要になります。エンタープライズライブラリすべてのルールセットを検証
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; }
}
質問は、すべてのルールセットが考慮されているように、私は、オブジェクトを検証しない方法ですか?
これは1つの解決策ですが、私はルールセットを常にパラメータとして渡したくありません。
var result = Validation.Validate<Category>(category, new string[] { "NameRuleset", "DescriptionRuleset" });
そして、これが唯一の
(私の例では、オブジェクトは常にその名が200文字を超える場合でも、有効になります)、デフォルトのルールセットを検証しますvar result = Validation.Validate<Category>(category);
そうにどのような方法がありますValidation.Validate()
の呼び出しごとに手動で指定することなく、すべてのルールセットを検証しますか?
は、なぜあなたは、デフォルトのルールセットでそれらの検証を指定しませんか? – Steven
個別のルールセットを指定したので、一度に1つのフィールドを検証する単体テストを書くことができます。これにより、「名前」フィールド(および名前フィールドのみ)の有効性をチェックする1つのテストと、「説明」フィールドを検証するもう1つのテストを書くことができます。 – Ove