2013-06-10 3 views
1

웹 API에서는 IEnumerable 인 속성이 포함 된 클래스를 serialize하는 중이고 비어있는 컬렉션이 아닌 경우 속성을 직렬화하기를 원합니다.비어 있지 않은 경우 List 속성 만 serialize하십시오.

[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으로이 작업을 수행 할 방법이 있습니까? 그렇지 않다면 어떻게해야합니까?

답변

0

컬렉션을 추가해야만 컬렉션을 null로 남겨 둘 수 있습니까? 예 :

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

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

"Enumerable.Empty"옵션이 있습니까? – neontapir

관련 문제