2011-12-23 58 views
2

我可以使用C#中的XmlSerializer控制某些字段的序列化嗎? Fox示例將名爲「Type」(字符串)的屬性序列化爲其他字符而不是字符串。 在此先感謝。我可以使用XmlSerializer控制某些字段的序列化

+0

您可以根據[Serializable]屬性控制什麼獲得序列化,所以對於一個Class,例如,您可以選擇將整個類序列化或只是某些屬性,例如 – MethodMan

回答

5

您可以通過XmlElement/XmlAttribute註釋來控制一些東西 - 元素的名稱,它是屬性還是完整的XML元素等。但是,您不能直接更改類型。如果您需要支持任何類型的複雜序列化方案,由於其很多限制,XmlSerializer並不是一個好選擇。你最好使用DataContractSerializer(參見WCF文檔中的"Using Data Contracts"),或者甚至可以自己編寫它。

如果你只是想(使用自定義XML類型或命名空間EG)以改變所產生的序列化數據的XML類型,您可以做到這一點與XmlType屬性,但這樣做只爲你聲明工種而不是原始的CLR類型(例如,你不能將一個字符串變成一個整數或另一個更復雜的類型)。

0

我想你想的IXmlSerializable interface

你無法控制打字只是使用屬性。你必須推出你自己的代碼來序列化/反序列化類。該界面允許你這樣做。

1

您可以通過XMLIgnore屬性控制要序列化的內容。這不會序列化用此屬性裝飾的屬性。

您還可以使用XMLType來管理XML序列化程序如何序列化類型,但這並不意味着您可以直接影響CLR類型。

你不能使用序列化來改變CLR類型。

相關問題