2

저는 엔터프라이즈 라이브러리 유효성 검사 응용 프로그램 블록을 사용하고 있습니다.엔터프라이즈 라이브러리 유효성 검사 응용 프로그램 블록 (상속 포함)

추상 클래스 A { public int fieldA; }

클래스 B, • { }

나는 또한 내가 구성에 입력하는 경우에도, 검증이 성공하지 못한 I 필드 fieldA과를 찾을 수 아니에요 B를 입력 유효성 검사기를 추가 . VAB는 추상 클래스와 상속 된 속성 또는 필드를 고려하지 않습니까?

답변

2

테스트를 수행했으며 기본 클래스와 추상 기본 클래스에서 잘 작동합니다. 구성을 게시 할 수 있습니까?

필드를 처리 할 때 속성 유효성 검사 XML을 사용하지 않도록주의하십시오 (그 반대의 경우도 마찬가지입니다). 속성을 사용하는 경우

<validation> 
    <type assemblyName="MyProject.Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" 
     name="MyProject.Test.B"> 
     <ruleset name="RuleSetB"> 
     <fields> 
      <field name="fieldA"> 
      <validator lowerBound="1" lowerBoundType="Inclusive" upperBound="100" 
       upperBoundType="Inclusive" negated="false" messageTemplate="fieldA must be between 1 and 100" 
       messageTemplateResourceName="" messageTemplateResourceType="" 
       tag="" type="Microsoft.Practices.EnterpriseLibrary.Validation.Validators.RangeValidator, Microsoft.Practices.EnterpriseLibrary.Validation, Version=4.1.0.0, Culture=neutral, PublicKeyToken=null" 
       name="Range Validator" /> 
      </field> 
     </fields> 
     </ruleset> 
    </type> 
    </validation> 
2

VAB는 상속을 지원합니다 같은

위의 샘플을 기반으로 구성이 보일 것입니다. 상속은 구성 기반 유효성 검사 (FAQ here에서 읽을 수 있음)에서 지원되지 않습니다.

이 문제를 해결하려면, 당신은 서브 클래스에 대한 검증 명세서 를 복제 할 수 있습니다 : 주위 entlib 팀에 의해 주어진 작업이입니다.

물론이 기본 클래스의 모든 변경 사항에 대해 많은 파생 된 유형으로 복사해야하기 때문에이 작업은 쉽지 않습니다. 이것은 부서지기 쉽고 오류가 발생하기 쉽습니다. 이 때문에 기본 클래스에서 구현으로 유효성 검사를 복제 할 수있는 솔루션을 만들었습니다.

Stackoverflow에 게시하는 데 너무 많은 코드가 있지만, 내 블로그 게시물 here을 읽을 수 있습니다.

이 정보가 도움이되기를 바랍니다.

관련 문제