7

Many time i saw that developer are using DataContract and DataMember Attributes for their Asp.net Web API model?

What are the differences and best practices?

Cruiser KID
  • 1,250
  • 1
  • 12
  • 26

1 Answers1

12

The main advantage of using DataContract, is that you can avoid duplicate attributes for some common serialization hints for XmlMediaTypeFormatter and JsonMediaTypeFormatter. I.e. you can opt-in/opt-out specific properties of a model to be serialized or rename a property and have both formatters respect that.

For example:

[DataContract]
public class Sample {

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

   public string PropTwo {get;set;}

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

is equivalent to:

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;}
}
Irshad
  • 3,071
  • 5
  • 30
  • 51
Filip W
  • 27,097
  • 6
  • 95
  • 82
  • it's also used to validate the received model for required members when you set "IsRequired" to true. – CME64 Feb 08 '21 at 06:59