7

開発者がAsp.netWebAPIモデルにDataContract属性とDataMember属性を使用しているのを何度も見ましたか?

違いとベストプラクティスは何ですか?

4

1 に答える 1

10

を使用する主な利点は、およびDataContractのいくつかの一般的なシリアル化ヒントの属性の重複を回避できることです。つまり、シリアル化するモデルの特定のプロパティをオプトイン/オプトアウトするか、プロパティの名前を変更して、両方のフォーマッターにそれを尊重させることができます。XmlMediaTypeFormatterJsonMediaTypeFormatter

例えば:

[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;}
}
于 2012-12-30T11:50:04.287 に答える