我可以一起使用DataContract和Serializable吗?

时间:2011-03-23 12:23:22

标签: wcf datacontract serializable

我正在开发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?)

2 个答案:

答案 0 :(得分:40)

我在MSDN上找到了一篇文章,我们可以同时使用属性DataContract和Serializable。

  

使用[Serializable],所有字段都成为数据合同的一部分(除非它们标有[NonSerialized])。使用[DataContract]时,仅包含标有[DataMember]的成员。请注意,如果某个类型同时具有[DataContract]和[Serializable]属性,它将使用[DataContract]映射

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

答案 1 :(得分:1)

如果问题在于命名,为什么不使用

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