我很困惑XmlSerializer
如何在幕後工作。我有一個類將XML反序列化爲一個對象。我所看到的是以下兩個不是被反序列化的Xml組成部分的元素。C#Xml串行器將列表反序列化爲0而不是null
[XmlRootAttribute("MyClass", Namespace = "", IsNullable = false)]
public class MyClass
{
private string comments;
public string Comments
{
set { comments = value; }
get { return comments; }
}
private System.Collections.Generic.List<string> tests = null;
public System.Collections.Generic.List<string> Tests
{
get { return tests; }
set { tests = value; }
}
}
讓我們以下面的XML作爲例子:
<MyClass>
<SomeNode>value</SomeNode>
</MyClass>
你注意到測試和評論不屬於XML的一部分。
當這個XML被反序列註釋爲空(預期)和測試是一個空列表與0
計數如果有人可以解釋這對我來說將是非常讚賞。我更喜歡的是,如果<Tests>
從XML中丟失,那麼列表應該保持爲空,但是如果存在(可能爲空)節點<Tests />
,那麼該列表應該被分配。
@gdir你是說當你序列化這個你得到一個空值列表而不是空列表? – Maxqueue
沒有我問的是,因爲測試不是XML的一部分,當序列化它應該爲空而不是空列表。那有意義嗎? – Maxqueue
OP的問題是關於反序列化而不是序列化。當上面的XML被反序列化時,即使'XML'中沒有出現' ',也會分配'tests'集合。 (順便說一句,我可以重現它。) –
dbc