加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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属性控制后者.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读