Много раз я видел, что разработчик использует атрибуты DataContract и DataMember для своей модели веб-API Asp.net?
В чем различия и лучшие практики?
Много раз я видел, что разработчик использует атрибуты DataContract и DataMember для своей модели веб-API Asp.net?
В чем различия и лучшие практики?
Основное преимущество использования 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;}
}