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?

有帮助吗?

解决方案

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;}
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top