2013-03-13 43 views
0

我有一個之前被序列化過的類。我們有它的xml輸出。 當我們打開項目時,我們反序列化xml以獲取保存的對象。 現在我已將新的bool屬性添加到類中,並且由於它是一個新屬性,所以舊xml不具有此屬性。我的反序列化工作正常,但爲bool屬性賦予false,如果它不在XML中,我希望它設置爲true。我怎樣才能做到這一點?我試過像這樣C#中的XML反序列化#

public bool? _flag; 
[XmlElement("Flag")] 
public bool? flag 
{ 
    get 
    { 
     if (null != _flag) 
     { 
      return _flag; 
     } 
     return true; 
    } 
    set { _flag= value; } 
} 
+1

反序列化跳過初始化,您可以檢查http://stackoverflow.com/questions/1266547/how-do-you-find-out-when-youve-been-loaded-via-xml-serialization的解決方法 – Polity 2013-03-13 03:59:33

回答

2

你只需要添加你的默認構造函數並將其設置在那裏。這裏有一個例子:

public MyObject() 
{ 
    Flag = true; 
} 

編輯

我不知道發生了什麼事情在你的代碼,但是這個工作完全正常:

public class MyObject 
    { 
     public MyObject() 
     { 
      Flag = true; 
     } 

     public bool Flag { get; set; } 

     public string Name { get; set; } 
    } 

首先,我沒有在那裏有bool屬性並將其序列化爲一個文件..然後對於第2步,我添加了bool屬性和構造函數..然後從磁盤反序列化它,並且它顯示了true,這正是我的預期。

請檢查您的代碼,因爲我預計會發生其他事情。如果您需要幫助,請在這裏發佈完整課程。

+0

謝謝對於你的回覆......但在添加構造函數後,它仍然將標誌值設置爲false :( – 2013-03-13 05:16:02

+0

這很奇怪..因爲我剛剛在這裏試過了,它工作得很好,你能發佈你的整個班級嗎? – Matt 2013-03-13 05:43:21

+0

看到我上面的編輯。 – Matt 2013-03-13 05:47:15