簡體   English   中英

XMLSerializer的特殊獲取器和設置器

[英]Special getters and setters for XMLSerializer

我有一個包含大量從文件加載的資源的類。 想要將此類的對象序列化為XML,但要使用資源路徑而不是實際資源本身。

現在,我通過創建許多ResourceSource字段來解決此問題,這些字段存儲ResourceSource的路徑並在資源本身上使用XMLIgnore 但是,這些必須是公開的,效果不是很好。

似乎我真正想要的是能夠創建僅由XMLSerialize執行的特殊屬性訪問器。 此功能是否存在,或者有什么方法可以我實現?

另外,是否可以將ResourceSource字段設置為只能由XMLSerialize訪問?

您是否考慮過實現IXmlSerializable 這使您可以更好地控制序列化過程。

實現此接口有兩個原因。 第一個是控制XmlSerializer如何序列化或反序列化對象。 例如,您可以將數據分塊為字節,而不是緩沖大型數據集,並且還可以避免在使用Base64編碼對數據進行編碼時出現膨脹。 要控制序列化,請實現ReadXml和WriteXml方法以控制用於讀取和寫入XML的XmlReader和XmlWriter類。

第二個原因是能夠控制架構。 若要啟用此功能,必須將XmlSchemaProviderAttribute應用到可序列化的類型,並指定返回架構的靜態成員的名稱。

聽起來您的班級正在過載以承擔多個職責,這幾乎總是一個危險信號,該進行一些重構了。

我要做的是有一個可序列化的類存儲資源路徑,另一個可存儲類本身的資源。 不可序列化類的構造函數可以采用序列化類的實例,從磁盤加載資源等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM