2013-11-14 29 views
1

我正在讀取.xml文件,根據元素的不同,可能有也可能不是依賴關係標記。如何在C#中將列表設置爲空?

[XmlArray("dependencies"), XmlArrayItem("dependency")] 
public List<string> Dependencies { get; set; } 

當沒有<依賴>,我想要列表設置爲空,我試圖與

List<string> Dependencies = null; 

不過的事,當我反序列化我的XML,依賴性如圖計數= 0。我希望它顯示爲空設置,所以當我序列化它時,我不會在我的xml文件中將空白<依賴關係/>標記視爲無用的混亂。這與一個字符串出色地工作,我簡單地設置爲= null,但與列表,這不知道怎麼辦。

回答

0

如果你在ShouldSerialize前面添加一個方法,並將返回類型設置爲bool,那麼你可以覆蓋xmlserializer是否會序列化當前屬性。在這種情況下,如果計數爲零,則不會序列化相依性。

[XmlArray("dependencies"), XmlArrayItem("dependency")] 
    public List<string> Dependencies { get; set; } 
    public bool ShouldSerializeDependencies() 
    { 
     if (Dependencies != null && Dependencies.Count > 0) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
3

使用的XmlArray的IsNullable屬性屬性

[System.Xml.Serialization.XmlArray("dependencies", IsNullable=true)] 

副作用是,你會得到xsi:nill=true屬性您dependencies元素,但它是一個小的價格,如果您的架構支持它。

0

嘗試ISNULLABLE屬性設置爲true:

[XmlArray("dependencies"), XmlArrayItem("dependency"), IsNullable = true] 
public List<string> Dependencies { get; set; } 
0

看到這個similar question。這裏的建議是使用不帶參數的[XmlArray]。 IsNullable不會讓你獲得你想要的乾淨的XML。