質問: `DataContractSerializer`では、クラスとメンバーを`DataContract`属性と`DataMember`属性でマークする必要があります。しかし、私の場合、クラスはEFPocoAdapaterフレームワークで自動生成され、これらの属性は存在しません。 これらの属性が存在しない状態でDataContractSerializerを使用してすべてのメンバーを強制的にシリアル化する方法はありますか > Alexdejから: > > これは3.5SP1で変更されました、あなたがそれを見たことを願っています: http ://www.pluralsight.com/community/blogs/aaron/archive/2008/05/13/50934.aspx > >
回答: あなたはできません - わかりやすく単純です。この属性は、DataContractSerializerがどの要素をシリアル化するかを選択するために必要です。基本的にすべてをシリアライズするXmlSerializer(これを無視するよう明示的に指示しない限り)とは対照的に、DataContractSerializerは "オプトイン"です - どのフィールドやプロパティを明示的に指定する必要があります。シリアル化します。 **更新:**何人かの人々が指摘したように、.NET 3.5 SP1では、Microsoftはそれらの規則を少し緩めました - どんなpublic read / writeプロパティもDataContractSerializerによって自動的に直列化されるでしょう。同時に、あなたのクラスはパラメータのないデフォルトコンストラクタを持つ必要があります。 もちろん、これ: * プライベートなものをシリアル化することは許可されていません - シリアル化したい場合は、パブリックなread / writeプロパティとして公開する必要があります。 * 定義済みの選択されたパラメータの順序を指定することはできません - 単にクラスに現れる順序でそれらを使用します * 逆シリアル化のために、クラス内にパラメータのないコンストラクタを再度用意する必要があります。 私はいまだにこれらのことが明確かつ明確であるべきだと思い、もはや必要とされないものを怠惰な/ずさんなプログラミングのための道を切り開く - 私はそれを好きではない。あなたがしたい場合は、あなたは[DataMember]であなたのプロパティを明示的にマークせずに今それを使用することができます..... マーク