我有一个属性定义为:
[XmlArray("delete", IsNullable = true)]
[XmlArrayItem("contact", typeof(ContactEvent)),
XmlArrayItem("sms", typeof(SmsEvent))]
public List<Event> Delete { get; set; }
如果 List<> Delete 没有项目
<delete />
被发射。如果 List<> Delete 设置为 null
<delete xsi:nil="true" />
被发射。如果集合没有项目,有没有办法使用属性来获取不发出删除元素?
Greg - 非常感谢,我什至没有阅读 IsNullable 文档,只是假设它表明它不需要。
Rob Cooper - 我试图避免 ISerializable,但 Gregs 的建议有效。我确实遇到了您在 (1) 中概述的问题,如果集合长度为零,我只返回 null 就破坏了一堆代码。为了解决这个问题,我创建了一个 EventsBuilder 类(我正在序列化的类称为事件),它管理事件类的底层对象的所有生命周期/创建,这些对象会吐出我们的事件类进行序列化。