基本上,最初的問題是我需要將布爾值序列化爲0或1。我找到的解決方案是實現IXmlSerializable,我這樣做。不幸的是,我想要序列化的類是從模式生成的代碼,並且它上面有一個XmlTypeAttribute。當我嘗試(反)序列與以通常的方式(new XmlSerializer(type)
)創建XmlSerializer的對象,它拋出這個異常:在具有XmlTypeAttribute的生成類上實現IXmlSerializable
System.InvalidOperationException: Only XmlRoot attribute may be specified for the type ______ Please use XmlSchemaProviderAttribute to specify schema type.
兩個選項浮現在腦海中立刻:
1)刪除屬性在生成的代碼中。 每次代碼重新生成時都必須進行此更改。
2)在創建序列化程序以刪除屬性時使用XmlAttributeOverrides對象。這需要代碼庫的其餘部分「知道」它需要重寫該屬性。而且,拋出的異常絕對不知道需要做些什麼來修復它。
兩個選項有點臭。有第三種選擇嗎?
_why_它有'[XmlType]'屬性嗎? – 2010-04-28 05:56:41
這就是Xsd2Code生成它的方式。說我使用的模式是一個巨大的野獸是輕描淡寫。 Xsd.exe和其他工具使用自定義庫崩潰或吐出40mb的代碼。 由於其他原因,我最終不得不修改生成的代碼。但是,如果解決此問題的第三種方法可能適用於另一方。 – 2010-04-28 17:40:48