2009-11-18 6 views
2

필자 내가 원래 내 유효성에 영향을 미치는 다형성/상속 할 수 있지만 그것을 좁혀 필자하는되었을 수 있습니다 생각이 문제와 싸우고 규칙 세트와 함께 작동하지 클래스 구조 ..검증 응용 프로그램 블록 개체 검사기는 여기 <p></p>이입니다 ...

public class Employee { 

    [ObjectValidator(Ruleset = "A")] 
    public EmployeeName Name { get; set; } 

    public Employee() 
    { 
     Name = new EmployeeName(); 
    } 
} 

public class EmployeeName 
{ 
    [StringLengthValidator(1,20,Ruleset = "A")] 
    public string First { get; set; } 

    public string Last { get; set; } 

    public EmployeeName() 
    { 
     First = string.Empty; 
     Last = string.Empty; 
    } 
} 

테스트 : 나는 룰셋 물건을 삭제하는 경우

[TestFixture] 
public class ObjectValidationWithRulesets 
{ 
    [Test] 
    public void wont_validate_with_a_ruleset() 
    { 
     var person = new Employee() 
     { 
      Name = new EmployeeName() 
      { 
       First = string.Empty, 
       Last = string.Empty 
      } 
     }; 

     var ruleSetValidator = 
      ValidationFactory.CreateValidator<Employee>("A"); 

     var validationResults = ruleSetValidator.Validate(person); 

     Assert.That(!validationResults.IsValid, 
      "Validation with rulsets failed"); 
    } 
} 

이 테스트를 통과. 그러나 일단 룰셋이 적용되면 객체를 올바르게 검증 할 수 없습니다.

누구든지이 문제에 대해 의견을 개진 할 수 있습니까?

건배,

+0

다음과 같이 내가 잘못을 선언했다 내 코드에서

// Correct [ObjectValidator("RuleSetA", Ruleset = "RuleSetA")] 

을 따르고있다. web.config 파일의 유효성 검사 구성을 사용하여 재생 중이며 ObjectValidator가 규칙 집합과 함께 작동하려면 해당 targetRuleSet 특성이 정의되어 있어야합니다. 하지만이 필드는 흥미 롭지 만 ObjectValidatorAttribute에 노출되지 않습니다. 이것은 의도적으로 설계된 것입니까? – boz

답변

2

나도이 문제를 가지고,하지만 난 구성 파일에 targetRuleSet을 정의하지 않았다. ObjectValidator 특성을 선언하는 방식을 수정하여이 문제를 해결했습니다. 나를 위해 일한 올바른 구문은 확인

// Wrong syntax 
[ObjectValidator(Ruleset = "RuleSetA")] 
+0

Pradeeptp가 옳습니다. 이상한 이유로'ObjectValidatorAttribute'는'DoCreateValidator' 메소드에서'Ruleset' 속성을 사용하지 않고'targetRuleset' 생성자 인자를 통해 설정된 값만을 사용합니다. – Steven

+0

스티븐, 편집 한 내용이 맞는지 확인해 주시겠습니까? 원래 샘플에 "또는 // correct ..."섹션을 추가 한 것을 볼 수 있습니다. – pradeeptp

+0

@pradeeptp, 나는 그것이 정확하다고 생각하지 않는다. 방금 룰셋'[ObjectValidator ("RuleSetA")]'로 시도했지만 실패했습니다. –

관련 문제