Есть ли какие-либо преимущества в использовании атрибутов DataContract и DataMember при работе с Asp.net веб-API?

много раз я видел, что разработчик использует атрибуты DataContract и DataMember для их Asp.net модель веб-API?

каковы различия и лучшие практики?

1 ответов


основное преимущество использования DataContract, это то, что вы можете избежать дублирования атрибутов для некоторых общих подсказок сериализации для XmlMediaTypeFormatter и JsonMediaTypeFormatter. Т. е. вы можете отказаться от определенных свойств модели для сериализации или переименования свойства, и оба форматера уважают это.

например:

[DataContract]
public class Sample {

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

   public string PropTwo {get;set;}

   [DataMember(Name="NewName")]
   public string PropThree {get; set;}
}

эквивалентно:

public class Sample {
   public string PropOne {get;set;}

   [XmlIgnore]
   [JsonIgnore]
   public string PropTwo {get;set;}

   [JsonProperty(PropertyName = "NewName")]
   [XmlElement("NewName")]
   public string PropThree {get; set;}
}