説明/参照:
Explanation:
.NET 3.5 SP1では、データコントラクトやデータメンバの属性を追加する必要はありません。そうしないと、XMLシリアライザの場合と同様に、データコントラクトシリアライザがクラスのすべてのパブリックプロパティをシリアライズします。
しかし、これらの属性を追加しないと、多くの便利な機能が失われます。
[DataContract]がなければ、データが存在するXML名前空間を定義することはできません。

[DataMember]がなければ、非公開のプロパティやフィールドをシリアル化することはできません。

[DataMember]がないと、シリアライゼーションの順序(Order =)を定義することはできず、DCSはすべてシリアライズします。

アルファベット順のプロパティ
[DataMember]がなければ、あなたのプロパティに別の名前を定義することはできません(Name =)

[DataMember]がなければ、IsRequired =やその他の便利な属性などを定義することはできません。

[DataMember]がなければ、特定の公共施設を除外することはできません - すべての公共施設は

DCSによってシリアライズされた
参考資料:http://stackoverflow.com/questions/4836683/when-to-use-datacontract-and-datamember- attributes