繁体   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