Enterpirse 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");
ルールセットを指定したにもかかわらず、常に前の検証呼び出しと同じ結果が得られます。助言がありますか?