C# 仅在列表属性不为空时序列化
在WebAPI中,我正在序列化一个包含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 {
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){
链接=新列表();
}
链接。添加(链接);
}
}
或可枚举。是否为空
选项?