[英]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.