【发布时间】:2021-05-23 21:39:11
【问题描述】:
当将 XML 反序列化为对象时,即使 XML 中没有该属性,该对象的属性也会变成一个空列表,预期的行为是该属性为空。
例如,给定一个类
public class MyFoo
{
public string Id { get; set; }
[XmlArrayItem(“Name”)]
public List<string> Names { get; set; }
public override string ToString()
{
// output the serialized xml
return Serialization<MyFoo>.ObjectToXml(this, false, false, true);
}
}
给定序列化的 XML
<MyFoo>
<Id>1</Id>
</MyFoo>
如您所见,在序列化之前仅填充了属性“Id”。理论上,如果我们将此 XML 反序列化回对象,我们应该填充“Id”并且“Names”将为空。 事实上,反序列化后,属性“Names”被初始化为一个包含空元素的List。 如下
<MyFoo>
<Id>1</Id>
<Names />
</MyFoo>
为什么会这样?
【问题讨论】:
-
谢谢@GellioGao!