C# 仅在列表属性不为空时序列化

C# 仅在列表属性不为空时序列化,c#,serialization,asp.net-web-api,C#,Serialization,Asp.net Web Api,在WebAPI中,我正在序列化一个包含IEnumerable属性的类,我只希望在属性不是空集合时序列化这些属性 [DataMember(EmitDefaultValue=false)]不起作用,因为属性在构造函数中初始化后不为null [DataContract] public class Linkable : ILinkable { [DataMember(EmitDefaultValue = false)] public IList<ILink> links {

在WebAPI中,我正在序列化一个包含
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>();
    }
}
[DataContract]
公共类可链接:可链接{
[数据成员(EmitDefaultValue=false)]
公共IList链接{get;set;}
[数据成员(EmitDefaultValue=false)]
公共IList链接模板{get;set;}
公共可链接(){
链接=新列表();
linkTemplates=新列表();
}
}

有没有一种方法可以通过
属性来实现这一点?如果没有,我如何才能做到这一点?

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

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

    public void AddLink(ILink link) {
        if (links == null) {
            links = new List<ILink>();
        }
        links.Add(link);
    }
}
公共类可链接{
公共IList链接{get;set;}
公共无效添加链接(ILink链接){
if(links==null){
链接=新列表();
}
链接。添加(链接);
}
}

可枚举。是否为空
选项?