기본적으로 초기 문제는 부울 값을 0 또는 1로 serialize해야합니다. 내가 찾은 솔루션은 IXmlSerializable을 구현하는 것입니다. 불행히도 직렬화하려는 클래스는 스키마에서 생성 된 코드이며 XmlTypeAttribute가 있습니다.XmlTypeAttribute가있는 생성 된 클래스에 IXmlSerializable 구현
System.InvalidOperationException: Only XmlRoot attribute may be specified for the type ______ Please use XmlSchemaProviderAttribute to specify schema type.
두 가지 옵션이 immediatly 마음에 와서 :
1)를 제거 내가하려고하면 (드)는이 예외를 throw 일반적인 방법 (new XmlSerializer(type)
)에서 만든 XmlSerializer를 사용하여 개체를 직렬화 속성을 생성합니다. 이 변경은 코드가 다시 생성 될 때마다 수행되어야합니다.
2) 특성을 제거하기 위해 serializer를 만들 때 XmlAttributeOverrides 개체를 사용하십시오. 따라서 나머지 코드베이스는 해당 속성을 재정의해야한다는 것을 "알"있어야합니다. 또한 throw 된 예외는이를 해결하기 위해 수행해야 할 작업에 대한 단서를 제공하지 않습니다.
두 옵션 모두 악취가납니다. 세 번째 옵션이 있습니까?
_why_'[XmlType]'속성이 있습니까? –
Xsd2Code가 생성 한 방식입니다. 내가 사용하고있는 스키마가 거대한 짐승이라고 말하는 것은 삼가면서 말하는 것입니다. Xsd.exe와 다른 도구 중 하나가 사용자 지정 라이브러리를 사용하여 40MB의 코드를 충돌 시키거나 뱉어 냈습니다. 다른 이유로 인해 어쨌든 생성 된 코드를 수정해야했습니다. 그러나이 문제와 관련된 세 번째 방법이있는 경우 다른 문제도 해결 될 수 있습니다. –