親と子に 2 つの異なるルールセットがある場合、子クラスのプロパティの検証が機能しません。
これはクラス コードです。Mytype は親で、Person は子です。
[HasSelfValidation]
public class MyType
{
[SelfValidation(Ruleset = "RulesetA")]
[SelfValidation(Ruleset = "RulesetB")]
public void DoValidate(ValidationResults results)
{
}
[NotNullValidator(Ruleset = "RulesetA")]
[ObjectValidator("RulesetA", Ruleset = "RulesetA")]
public Person Person { get; set; }
}
public class Person
{
[NotNullValidator(Ruleset = "RulesetB")]
public string GivenName { get; set; }
}
これは、すべてのルールセットに対して MyType クラスを検証するためのカスタム バリデータ クラスです。
public interface IValidator<T>
{
ValidationResults Validate(T target);
}
public class MyValidator : IValidator<MyType>
{
public ValidationResults Validate(MyType target)
{
return Validation.Validate(target, new string[] {"RulesetA", "RulesetB"});
}
}
そして、これは失敗するテストです: (IsValid は False に設定する必要がありますが、True です)
[TestMethod]
public void Should_return_false_when_validating_MyType_without_PersonApplying_GivenName()
{
//arrange
var myType = new MyType()
{
Person= new Person()
};
myType.Person.GivenName = null;
//act
MyValidator _validator = new MyValidator();
var resultList = _validator.Validate(myType);
//assert
Assert.IsFalse(resultList.IsValid);
}
助けてくださいませんか?