2012-04-19 42 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