【问题标题】:(de)serialization of changed objects in C#(反)在 C# 中更改对象的序列化
【发布时间】:2014-01-13 21:46:31
【问题描述】:

我正在使用 C#、.NET Framework 4.0。 我有一个由两个字符串和几个 int 字段组成的类。 在我的程序中,我序列化/反序列化该类的对象,一切正常,但将来需要通过添加新的 int 字段多次更改该类。如何使旧保存的数据与同一类的新对象兼容,例如,我需要对该类的所有对象进行 for 循环,包括没有设置新 int 字段的旧对象?

【问题讨论】:

  • 你是如何序列化/反序列化数据的?
  • if (File.Exists("C:\\UvozIzvoz\\stanje.bin")) { using (Stream stream = File.Open("C:\\UvozIzvoz\\stanje.bin" , FileMode.Open)) { var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); stanje = (Stanje)bformatter.Deserialize(stream); } }
  • 我使用 binaryFormatter

标签: c# .net serialization deserialization


【解决方案1】:

我会为此使用 Json。这样,当您向类添加新属性时,您无需更改任何加载/保存代码。我通常使用json.net

【讨论】:

  • 这个答案似乎最简单!谢谢队友,也感谢所有试图回答的人,我没有足够的声望来投票给你的答案!
【解决方案2】:

如何通过相应的注释使新属性成为可选? XML Serialization of the default values of optional attributes

或者您可以创建仅在两个版本之间迁移的代码(以旧方式加载并转换为新版本)。

【讨论】:

    猜你喜欢
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多