【问题标题】:Serializing a private struct - Can it be done?序列化私有结构 - 可以吗?
【发布时间】:2011-01-27 20:19:13
【问题描述】:

我有一个包含私有结构的公共类。该结构包含我想要序列化的属性(主要是字符串)。当我尝试使用 XmlSerializer 序列化结构并将其流式传输到磁盘时,我收到一条错误消息,指出只能序列化公共类型。我不需要也不希望这个结构是公开的。有没有办法可以序列化它并保持私有?

【问题讨论】:

    标签: c# serialization xml-serialization


    【解决方案1】:

    我相信,如果您实现IXmlSerializable,那么您应该能够准确控制数据的序列化内容和方式。 如果您查看提供的链接中的示例,它们会序列化一个私有字符串。

    【讨论】:

    • 谢谢。我想我可以完成这项工作,但它使这项工作比 IMO 更困难。
    • @Randy 我认为没有其他方法可以解决它。我过去曾遇到过这种情况,对此感到非常沮丧。如果您使用 XML 序列化程序,它只会序列化公共数据成员,除非您实现 IXmlSerializable 接口(不是 ISerializable,这是我过去的原因,我无法恢复私有数据)
    • 错误是只能序列化publictypes,不能序列化publicmembers。只是指出这一点。
    • @yoda 从我对 XmlSerializer 文档的阅读中,它明确地只序列化公共成员:“在 XML 序列化期间,只有对象的公共属性和字段被序列化。” - 来自Xml Serialization in .Net。我会假设私有类型也不会序列化,但如果你自己(通过接口)进行序列化,你应该能够序列化你想要的任何东西。
    猜你喜欢
    • 2013-08-31
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多