2011-08-04 5 views
3

이의 나는 두 가지 간단한 클래스가 있다고 가정하자 그런 다음 고객 인스턴스의 모든 속성을 확인하기 위해 선택한 경우에도 - 유효성 검사기는 고객 인스턴스의 Name 속성을 확인하지만 Details의 Address 속성은 유효성을 검사하지 않습니다.데이터 주석 검증 수동을 사용하고 개체 그래프

이것은 의도적으로 설계 되었습니까? 게다가 이것이 의도적으로 설계된 것이라면 전체 객체 그래프에 대해 유효성 검사기를 수동으로 사용하는 대신 중첩 된 유형을 포함하여 유효성 검사 속성으로 장식 된 전체 객체 그래프를 수동으로 검증하는 강력한 방법이 있습니까?

이것은 콘솔 응용 프로그램 내에서 테스트되었으며 ASP.NET MVC 응용 프로그램에서는 테스트되지 않습니다.

친절하게 제공합니다.

답변

1

거의 동일한 문제가 있지만 중첩 된 개체 모음이 있습니다. 컨테이너 클래스에 IValidatableObject을 구현하여 문제를 해결할 수있었습니다. 귀하의 경우에는 약간 더 쉽습니다. 이 같은 것을 :

public class Customer : IValidatableObject 
{ 
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     var context = new ValidationContext(this.Details, validationContext.ServiceContainer, validationContext.Items); 
     var results = new List<ValidationResult>(); 
     Validator.TryValidateObject(this.Details, context, results); 
     return results; 
    } 
} 

희망이 있습니다.

+0

이것은 재귀의 한 수준이며 수동으로 직접 수작업으로 작성해야합니다. 사용자 정의'Validate' 구현없이 전체 객체 그래프를 자동으로 트래버스하는 방법이 있습니까? – gzak