我正在尝试保存我在Unity中制作的游戏数据,用C#编写。我能够序列化我的数据并反序列化它。当我反序列化一个文件并且我序列化的类已经删除了一个属性时,问题出现了。发生这种情况时会抛出SerializationException
示例:
可以说我有这个初级课程:
[Serializable]
public class foo {
public int bar;
public int baz;
}
然后我将它序列化为一个文件。然后我修改此类并删除public int baz
。下次我尝试反序列化该文件时会抛出异常,因为它找不到将baz
放在类foo
中的位置。
有没有办法告诉反序列化程序忽略额外的属性或将类foo
转换成可以处理额外对象的东西?
答案 0 :(得分:1)
我相信您正在寻找版本容忍序列化......请阅读here。
答案 1 :(得分:1)
您是否尝试过使用Json.NET?它容忍额外的属性(同时更快,并具有其他附加功能)。
我刚测试过(用bar和baz保存,然后删除baz,然后反序列化):
public class foo {
public int bar {get;set;}
public int baz {get;set;}
}