28

我正在开发 WCF 服务。我的所有类都已经使用 [Serializable] 属性进行序列化,但由于“k__BackingField”属性命名问题,我使用了 DataContract 和 DataMember 属性。所以我可以同时使用这两个属性,如下所示:

[Serializable]
[DataContract]
public class User
{

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

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

它是否正确?

我在这里也得到了类似的解决方案。 JSON的C#自动属性反序列化

可序列化和 DataContract(不是反对?)

4

2 回答 2

43

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

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

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

于 2011-03-23T15:29:37.583 回答
1

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

[XmlElement(ElementName = "Name")]
public string Name { get; set; } 
于 2011-03-23T12:27:54.770 回答