簡體   English   中英

如何在DataContract中使用條件DataMember?

[英]How to have conditional DataMember in a DataContract?

從給定的DataContract中,我只想顯示Benefits一個XML節點。 因為一次,三個DataMembers房屋,汽車和共享中的只有一個不會為空。

public class WebAPIModel 
{
    [DataMember(Name = "Benefits")]
    public List<House> Houses { get; set; }
    [DataMember(Name = "Benefits")]
    public List<Car> Cars { get; set; }
    [DataMember(Name = "Benefits")]
    public List<Share> Shares { get; set; }     
}

(顯然當前這不起作用)

如何使生成的XML僅顯示一個節點的Benefits

我嘗試了類似...

    // Since only one property is not null at one time 
    // I thought EmitDefaultValue will do the trick .. but it doesn't
    [DataMember(Name = "Benefits", EmitDefaultValue = false)]

如果是關於序列化,則EmitDefaultValue = false應該足夠。

出於顯示目的:

創建一個名為“ Benefits”的新屬性,將其標記為非數據成員,實現getter。

它可能必須是通用類型,是Car,Share等的共同祖先。作為另一種選擇,您可以定義一個新類型並在訪問此新屬性時即時生成其實例。

如果這種具有新屬性的方法適合您,則還可以考慮僅在客戶端應用程序中存在的擴展類中實現它,以減少服務器端混亂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM