2011-08-04 95 views
0

我是WCF的新手,正在尋找關於特定問題的一些建議。我正在使用Enitity Framework,並希望通過WCF將我的實體作爲JSON返回。不過,我只想在某些情況下返回某些信息。例如,在一種方法中,我可能想要返回一個用戶名和他們的用戶名,在另一個例子中,我想返回一個用戶名,用戶名和電話號碼。起初,我想也許我可以返回一個匿名類型如返回自定義數據WCF

var obj = new { username = user.UserName, userid = user.UserId }; 

但研究後,我發現,這不是一個好主意。轉念一想返回鍵的值的字典,這種做法的問題是返回的JSON:

{"key":"username","Value":"Andrew"} 

我沿着我也不過的的

{"username":"Andrew"} 

行的東西后製作我自己的類型。有沒有排除屬性的方法?即如果我的類型有一個屬性在某些情況下,電話將能夠排除它嗎?

任何幫助/建議大加讚賞

回答

0

我知道的DataContractSerializer,您可以使用EmitDefaultValue,例如,你可以有一個名爲的UserInfo

 

    [DataContract] 
    public class UserInfo 
    { 
     [DataMember] 
     public string UserID { get; set; } 

     [DataMember] 
     public string UserName { get; set; } 

     [DataMember(EmitDefaultValue=false)] 
     public int Age { get; set; } 

     [DataMember(EmitDefaultValue=false)] 
     public DateTime Time { get; set; } 
    } 


 

我不知道合同EmitDefaultValue是否支持由JSON序列化程序,你可以自己嘗試嗎?

+0

現在就試試,謝謝。 – Peuge

+0

這就像一個魅力!感謝您的回答,這樣做比其他任何方式更有意義。 – Peuge