【发布时间】:2011-02-02 09:48:23
【问题描述】:
这是我的课:
public class Command
{
[XmlArray(IsNullable = true)]
public List<Parameter> To { get; set; }
}
当我序列化这个类的一个对象时:
var s = new XmlSerializer(typeof(Command));
s.Serialize(Console.Out, new Command());
按预期打印(省略 xml 标头和默认 MS 命名空间):
<Command><To xsi:nil="true" /></Command>
当我使用这个 xml 并试图反序列化它时,我被卡住了,因为它总是打印“Not null”:
var t = s.Deserialize(...);
if (t.To == null)
Console.WriteLine("Null");
else
Console.WriteLine("Not null");
如果在 xml 中为空,如何强制反序列化器使我的列表为空?
【问题讨论】:
-
没有清单或空清单对你来说真的那么重要吗?
-
是的。我当然可以用一些标志来解决这种情况,但我想知道是否有一个好的标准解决方案。
-
避免空对象通常是一件好事(不易出错,无需检查代码周围的空值等)。使用标志将清楚地表明该空值究竟代表什么。
-
是的,但实际上,检查 null 将被检查标志所取代。谢谢你的建议;)
标签: c# xml arrays serialization nullable