仅在非空时序列化List属性

时间:2013-06-10 14:22:31

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

在web api中,我正在序列化一个包含IEnumerable属性的类,如果属性不是空集合,我只希望序列化属性。

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

[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执行此操作?如果没有,我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

您是否可以将集合留空,直到您需要向它们添加内容为止?例如:

public class Linkable {
    public IList<ILink> links { get; set; }

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