我正在开发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
答案 0 :(得分:40)
我在MSDN上找到了一篇文章,我们可以同时使用属性DataContract和Serializable。
使用[Serializable],所有字段都成为数据合同的一部分(除非它们标有[NonSerialized])。使用[DataContract]时,仅包含标有[DataMember]的成员。请注意,如果某个类型同时具有[DataContract]和[Serializable]属性,它将使用[DataContract]映射
答案 1 :(得分:1)
如果问题在于命名,为什么不使用
[XmlElement(ElementName = "Name")]
public string Name { get; set; }