仅在非空时序列化List属性

本文关键字:序列化 List 属性 | 更新日期: 2023-09-27 18:17:38

在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 ?如果没有,我该如何做到这一点?

仅在非空时序列化List属性

你能让集合为空,直到你需要添加一些东西给他们吗?例如:

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