我可以同时使用 DataContract 和 Serializable 吗?
Posted
技术标签:
【中文标题】我可以同时使用 DataContract 和 Serializable 吗?【英文标题】:Can I use DataContract and Serializable together? 【发布时间】:2011-07-21 06:47:47 【问题描述】:我正在开发 WCF 服务。我的所有类都已经使用 [Serializable] 属性进行序列化,但由于“k__BackingField”属性命名问题,我使用了 DataContract 和 DataMember 属性。 所以我可以像下面这样一起使用这两个属性吗:
[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?)
【问题讨论】:
【参考方案1】:我在MSDN上找到了一篇文章,据此我们可以同时使用属性DataContract和Serializable。
使用 [Serializable],所有字段都成为数据协定的一部分(除非它们被标记为 [NonSerialized])。使用 [DataContract],仅包含标有 [DataMember] 的成员。请注意,如果一个类型同时具有 [DataContract] 和 [Serializable] 属性,它将使用 [DataContract] 映射
http://msdn.microsoft.com/en-us/magazine/cc163569.aspx
【讨论】:
【参考方案2】:如果问题在于命名,为什么不使用
[XmlElement(ElementName = "Name")]
public string Name get; set;
【讨论】:
以上是关于我可以同时使用 DataContract 和 Serializable 吗?的主要内容,如果未能解决你的问题,请参考以下文章
我可以用它代替 Serializable 的 DataContract
为啥我不能在同一个类上使用 WCF DataContract 和 ISerializable?