2012-01-22 3 views
1

속성 Type, NameVersion을 가진 사용자 정의 AdapterElement : ConfigurationElement을 정의했다고 가정 해보십시오. NameVersion이를 고유 Type 속성을 식별하기 때문에, 나는 다음과 같은 구조를 가지고에게 구성 파일을 적용하고 싶습니다 :구성 요소 - 특성 조합?

<adapter type="TypeOfAdapter"/> 
<adapter name="NameOfAdapter" version="VersionOfAdapter"/> 

난 쉽게 IsRequired = false와 그 세 가지 속성을 표시 할 수 있으며, 사용자가 조합을 지정할 수 있습니다 원하는. 그러나 다음과 같은 조합은 유효하지 않습니다 나는 그들을 금지하고자하는이 달성의 쉬운 방법

<adapter type="TypeOfAdapter" version="VersionOfAdapter"/> 
<adapter type="TypeOfAdapter" name="NameOfAdapter"/> 

있습니까?

답변

1

나는 이것에 대한 답변을 찾기 위해 주위를 약간 읽어야했습니다.

AdapterElement 클래스의 유효성을 PostDeserialise 검사에 추가하는 방법은 어떻습니까?

protected override void PostDeserialize() 
{ 
    bool isValid = Type != null && Name == null && Version == null 
       || Type == null && Name != null && Version != null; 
    if (!isValid) 
    { 
     throw new ArgumentException("Must specify either Type or Name and Version"); 
    } 
    base.PostDeserialize(); 
} 

a blog I found에 따르면 어떤 하나의 구성 섹션에 여러 속성의 유효성을 확인하는 더 확실한 방법이 없다 -하지만 너무 접속과 운전 요소에 대한 사실로 나타납니다.

관련 문제