0
부모 및 자식에 대해 2 개의 다른 규칙 집합이있을 때 자식 클래스의 속성에 대한 유효성 검사가 작동하지 않습니다. MYTYPE가 부모와 사람 아이엔터프라이즈 유효성 검사 부모 자식 클래스에 대해 다른 rululets를 차단합니다.
[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);
}
Wou 너 도와 줘?
'[ObjectValidator]'에서'Ruleset = "RulesetA"를 제거해야한다고 생각합니다. 그 속성을'[ObjectValidator]'로 장식하면됩니다. 이것은'Person'이 항상 유효성을 확인하도록합니다. – Steven
아니 여전히 실패 : ( – mk78
그리고'[ObjectValidator ("RulesetB", Ruleset = "RulesetB")]'(및'RulesetA')를'Person' 속성에 추가 할 때? – Steven