Могу ли я использовать DataContract и Serializable вместе? - PullRequest
25 голосов
/ 23 марта 2011

Я работаю над сервисом WCF.Все мои классы уже сериализуются с использованием атрибута [Serializable], но из-за проблемы именования свойств «k__BackingField» я использовал атрибуты DataContract и DataMember.поэтому могу ли я использовать оба атрибута вместе, как показано ниже:

[Serializable]
[DataContract]
public class User
{

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

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

это правильно?

Я также получил подобное решение здесь. C # автоматическая десериализация свойств JSON

Сериализуемый и DataContract (не против?)

Ответы [ 2 ]

40 голосов
/ 23 марта 2011

Я нашел статью на MSDN, согласно которой мы можем использовать оба атрибута DataContract и Serializable вместе.

С помощью [Serializable] все поля становятся частью контракта данных (если только они не помечены как [NonSerialized]). С помощью [DataContract] включаются только члены, отмеченные [DataMember]. Обратите внимание, что если тип имеет атрибуты [DataContract] и [Serializable], он будет использовать отображение [DataContract]

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

1 голос
/ 23 марта 2011

, если проблема заключается в наименовании, почему бы вам не использовать

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