2011-03-23 75 views
25

我正在使用WCF服務。我的所有類都已使用[Serializable]屬性進行序列化,但由於「k__BackingField」屬性命名問題,我使用了DataContract和DataMember屬性。 這樣我就可以使用這兩個屬性在一起,就像下面:我可以一起使用DataContract和Serializable嗎?

[Serializable] 
[DataContract] 
public class User 
{ 

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

    [DataMember] 
    public int UserID { get; set; } 
} 

這是正確的?

我也在這裏得到了類似的解決方案。 C# automatic property deserialization of JSON

Serializable and DataContract (not versus?)

回答

36

我發現在MSDN上的一篇文章,根據這一點,我們可以使用這兩個屬性DataContract和序列化到一起。

使用[Serializable],所有字段都成爲數據協定的一部分(除非它們標有[NonSerialized])。通過[DataContract],僅包含標有[DataMember]的成員。注意,如果一個類型具有兩個[DataContract]和[可序列化]屬性上,它會使用[DataContract]映射

http://msdn.microsoft.com/en-us/magazine/cc163569.aspx

1

如果問題出在命名你爲什麼不使用

[XmlElement(ElementName = "Name")] 
public string Name { get; set; } 
相關問題