Есть ли польза от использования атрибутов DataContract и DataMember при работе с Asp.net Web API?

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

В чем различия и лучшие практики?


person Cruiser KID    schedule 30.12.2012    source источник


Ответы (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;}
}
person Filip W    schedule 30.12.2012
comment
он также используется для проверки полученной модели для требуемых членов, когда вы устанавливаете IsRequired в значение true. - person CME64; 08.02.2021