c# – XML序列化和空集合
发布时间:2020-12-15 20:46:19 所属栏目:百科 来源:网络整理
导读:我有一个属性定义为: [XmlArray("delete",IsNullable = true)][XmlArrayItem("contact",typeof(ContactEvent)),XmlArrayItem("sms",typeof(SmsEvent))]public ListEvent Delete { get; set; } 如果列表删除没有项目 delete / 发出.如果列表删除设置为null d
我有一个属性定义为:
[XmlArray("delete",IsNullable = true)] [XmlArrayItem("contact",typeof(ContactEvent)),XmlArrayItem("sms",typeof(SmsEvent))] public List<Event> Delete { get; set; } 如果列表<>删除没有项目 <delete /> 发出.如果列表<>删除设置为null <delete xsi:nil="true" /> 发出.有没有办法使用属性来获取如果集合没有项目不发出删除元素? Greg – 非常感谢,我甚至没有读过IsNullable文档,只是假设它发出了不需要的信号. Rob Cooper – 我试图避免使用ISerializable,但Gregs建议有效.我确实遇到了你在(1)中概述的问题,如果集合的长度为零,我只是返回null来打破一堆代码.为了解决这个问题,我创建了一个EventsBuilder类(我正在序列化的类称为Events),它管理Events类的底层对象的所有生命周期/创建,这些对象吐出我们的Events类以进行序列化. 解决方法
如果设置IsNullable = false或只删除它(默认情况下为false),则不会发出“delete”元素.仅当集合等于null时,这才有效.
我的猜测是,在.NET方面的“可空性”与XML中可空元素相关的方面存在混淆 – 那些用xml:nil属性标记. XmlArrayAttribute.IsNullable属性控制后者. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |