2012-06-11 6 views
3

이 오류 메시지는 전혀 의미가 없기 때문에 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다. VB.NET 라이브러리에서 다음과 같이 선언 된 열거 형 값이 있습니다. 위에서 볼 수 있듯이인스턴스 유효성 검사 오류 : Xml 역 직렬화에 유효한 값이 아닙니다.

"Instance validation error: 'None' is not a valid value for OptionDataType." 

은 '없음'이 분명히 유효한 값입니다 :

<Serializable()> Public Enum OptionDataType 
    <Xml.Serialization.XmlEnum("0")> None = 0 
    <Xml.Serialization.XmlEnum("1")> Option1 = 1 
    <Xml.Serialization.XmlEnum("2")> Option2 = 2 
    <Xml.Serialization.XmlEnum("3")> Option3 = 3 
    <Xml.Serialization.XmlEnum("4")> Option4 = 4 
    <Xml.Serialization.XmlEnum("5")> Option5 = 5 
    Option6 = 6 
End Enum 

나는이 개체의 XML 표현을 직렬화 복원하려고

, 나는라는 오류가 발생합니다. 문제를 더욱 좌절하게 만드는 것은이 오류가 특정 XML 파일에만 표시된다는 것입니다. 같은 방식으로 직렬화되고 'None'값을 갖는 다른 파일은 아무런 문제없이 deserialize됩니다. 무수한 시간 동안 오류가 발생하는 파일과 작업 파일을 비교했으며 XML 구조는 완전히 동일합니다.

다음은 직렬화 된 XML의 스 니펫입니다.

더 심각한 문제가 있다고 생각되지만 CLR은 유용한 정보 대신 거짓 오류를 표시합니다. 누군가가 실제 문제가 무엇인지 알아내는 방향으로 올바른 방향으로 나를 안내 할 수 있습니까? 아니면 이것이 유효한 오류인지, 왜 그리고 무엇이 잘못되었는지 설명해주십시오. 또한, 가치가있는 무엇을 위해, deserialization은 C# 라이브러리에서 발생합니다.

감사

답변

0

일부가 누락과 같이, 코드의 나머지 부분을 게시해야한다. serialize 된 XML은 "OptionType"을 필드로 참조하지만 이름을 변경하는 열거 형에 XmlElement 선언이 없습니다.

enum을 속성으로 사용하는 클래스에서 코드를 위로 올려보십시오.

0

XmlEnum 특성은 직렬화를 위해 유효한 값을 결정하는 요소라고 생각합니다. 다음으로 변경해보십시오.

<Xml.Serialization.XmlEnum("None")> None = 0 
관련 문제