簡體   English   中英

如何序列化繼承內置c#類的對象?

[英]How can I serialize objects that inherit built-in c# classes?

我正在嘗試創建一個將應用程序當前狀態保存到文件的函數,以及另一個加載已保存文件的函數。 當前,所有信息都包含在單個對象中,而單個對象又指向其他對象。 最近,我聽說C#具有一些內置類,可幫助您序列化和反序列化對象,因此我做了一些研究,並從以下頁面了解了DataContracts: http//msdn.microsoft.com/zh-cn/庫/ms731073.aspx

除實現內置類的類外,大多數方法都有效。 例如,我有一個繼承System.Windows.DependencyObject的對象,當我嘗試對其進行序列化時,它抱怨我的類繼承了一個不具有DataContract屬性的類。

對我來說,這為什么會是一個問題很有意義。 反序列化對象時,不會調用其構造函數。 如果它繼承了不可序列化的內容,則可能使其處於無效狀態。

我想知道這是否可行:我可以以某種方式告訴反序列化器在反序列化對象之前調用基類的默認構造函數嗎? 然后我將不得不告訴序列化器不要害怕。

您是否可以創建一個具有所有要存儲屬性的數據轉換器對象,然后使用框架對象中的數據填充該對象? 將其標記為已序列化,啟動您選擇的序列化類-現在您已擁有所需的所有信息。 您只需在反序列化之后重新填充適當的類。

您可能要考慮使用二進制序列化器或xml序列化器,而不是使用數據協定序列化器。 如果您將其保存到文件中並且不需要該文件,那么人類可讀的二進制序列化幾乎總是可行的。

請參閱二進制序列化 ,尤其是基本序列化主題。 還要看看XmlSerializer類該類有時在DataContractSerializer不能使用的地方起作用。

暫無
暫無

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

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