【发布时间】:2008-09-16 03:59:47
【问题描述】:
我有一个属性定义为:
[XmlArray("delete", IsNullable = true)]
[XmlArrayItem("contact", typeof(ContactEvent)),
XmlArrayItem("sms", typeof(SmsEvent))]
public List<Event> Delete { get; set; }
如果列表删除没有项目
<delete />
被发射。如果 List 删除设置为 null
<delete xsi:nil="true" />
被发射。如果集合没有项目,有没有办法使用属性来获取不发出删除元素?
Greg - 非常感谢,我什至没有阅读 IsNullable 文档,只是假设它表示不需要。
Rob Cooper - 我试图避免 ISerializable,但 Gregs 的建议有效。我确实遇到了您在 (1) 中概述的问题,如果集合长度为零,我只返回 null 就破坏了一堆代码。为了解决这个问题,我创建了一个 EventsBuilder 类(我正在序列化的类称为 Events),它管理 Events 类的底层对象的所有生命周期/创建,这些对象吐出我们的 Events 类进行序列化。
【问题讨论】:
-
我在codepoets.co.nz/2009/03/03/… 写了更详细的博客@ 将尝试@theahuramazda 的建议和更新。
标签: c# xml-serialization