2012-04-19 44 views
5

我有很多序列化的对象保存为XML,但我想向这些对象添加2个变量。如何更改序列化对象?

这是我的目标:

public class MyObject{ 
    public Int32 MyVariables = 0; 
} 

该目的已经连载了不少,我想继续读了这些“老”文件到我的应用程序的能力。

但我需要添加一些变量来使物体更好,如:

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

任何人都可以提出来添加这些新变量的最佳方法是什么?我实际上改变了MyObject并添加了字典,我相信它不再被正确读取。

在此先感谢!

编辑:我也没能捕捉异常的任何地方,看看它的对象读取失败时,我这样做是这样做的:

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

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

回答

4

只需添加新的变量。

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

+0

我认为这会起作用(实际上,如果我只是将类型设置为int而不是字典,它是默认情况下不可序列化的字典?) – Geesu 2012-04-19 03:46:03

+0

您无法使用XML Serializer序列化字典。但是,有一些解决方法。我会尝试挖掘一个链接。 – 2012-04-19 03:46:27

+1

这里有一个方法使用字典XML序列化器... http://johnwsaunders3.wordpress.com/2009/03/10/one-way-to-serialize-dictionaries/ – 2012-04-19 03:48:01