【问题标题】:Only serialize List property when not empty仅在不为空时序列化 List 属性
【发布时间】:2013-06-10 14:22:31
【问题描述】:

在 web api 中,我正在序列化一个包含 IEnumerable 属性的类,并且我只希望这些属性不是空集合时被序列化。

[DataMember(EmitDefaultValue = false)] 不起作用,因为属性不为空,因为它们是在构造函数中初始化的。

[DataContract]
public class Linkable : ILinkable {

    [DataMember(EmitDefaultValue = false)]
    public IList<ILink> links { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public IList<ILink> linkTemplates { get; set; }

    public Linkable() {
        links = new List<ILink>();
        linkTemplates = new List<ILink>();
    }
}

有没有办法用Attribute 做到这一点?如果没有,我该怎么做?

【问题讨论】:

    标签: c# serialization asp.net-web-api


    【解决方案1】:

    在您需要向其中添加内容之前,您可以将集合保留为空吗?例如:

    public class Linkable {
        public IList<ILink> links { get; set; }
    
        public void AddLink(ILink link) {
            if (links == null) {
                links = new List<ILink>();
            }
            links.Add(link);
        }
    }
    

    【讨论】:

    • 或者Enumerable.Empty 是一个选项吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 2013-08-31
    相关资源
    最近更新 更多