如何更改序列化对象?

Gee*_*esu 5 c# serialization

我有很多序列化对象保存为XML,但我想向这些对象添加2个变量.

这是我的对象:

public class MyObject{
    public Int32 MyVariables = 0;
}
Run Code Online (Sandbox Code Playgroud)

这个对象已被序列化了很多,我希望能够将这些"旧"文件读入我的应用程序.

但是我需要添加一些变量来使对象更好,例如:

public class MyObject{
    public Int32 MyVariables = 0;
    public Dictionary<string,MyEnum> MyDict = new Dictionary<string,MyEnum>();
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议添加这些新变量的最佳方法吗?我实际上改变了MyObject并添加了字典,我相信它不再被正确读取.

提前致谢!

编辑:我也无法在任何地方捕获异常以查看在读取对象时失败的位置,我这样做是为了这样做:

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
object obj = formatter.Deserialize(File.Open(Path, FileMode.Open));
Run Code Online (Sandbox Code Playgroud)

编辑2:我相信这实际上可能是由于我使用Enum作为字典的一部分,我[Serializable]在枚举上面添加它仍然不起作用 - 想法?

Eri*_* J. 4

只需添加新变量即可。

如果 XML 序列化程序找不到新变量的适当表示,它将使用默认值初始化它们。