次の方法で共有


シリアル化可能な型

既定では、 DataContractSerializer はすべてのパブリックに表示される型をシリアル化します。 型のすべてのパブリック読み取り/書き込みプロパティとフィールドがシリアル化されます。

既定の動作を変更するには、 DataContractAttribute 属性と DataMemberAttribute 属性を型とメンバーに適用します。この機能は、コントロールの下にない型があり、属性を追加するように変更できない場合に役立ちます。 DataContractSerializerは、このような "マークされていない" 型を認識します。

シリアル化の既定値

DataContractAttribute属性とDataMemberAttribute属性を適用して、型とメンバーのシリアル化を明示的に制御またはカスタマイズできます。 さらに、これらの属性をプライベート フィールドに適用することもできます。 ただし、これらの属性でマークされていない型もシリアル化および逆シリアル化されます。 次の規則と例外が適用されます。

  • DataContractSerializerは、新しく作成された型の既定のプロパティを使用して、属性のない型からデータ コントラクトを推論します。

  • get属性をそのメンバーに適用しない限り、パブリック setメソッドとIgnoreDataMemberAttribute メソッドを持つすべてのパブリック フィールドとプロパティがシリアル化されます。

  • シリアル化セマンティクスは、 XmlSerializerのものと似ています。

  • マークされていない型では、パラメーターを持たないコンストラクターを持つパブリック型のみがシリアル化されます。 この規則の例外は、ExtensionDataObject を用いた IExtensibleDataObject インターフェイスです。

  • 読み取り専用フィールド、 get メソッドまたは set メソッドのないプロパティ、および内部メソッドまたはプライベート set メソッドまたは get メソッドを持つプロパティはシリアル化されません。 そのようなプロパティは無視され、例外はスローされません。ただし、取得専用のコレクションの場合は除きます。

  • XmlSerializer 属性 ( XmlElementXmlAttributeXmlIgnoreXmlIncludeなど) は無視されます。

  • DataContractAttribute属性を特定の型に適用しない場合、シリアライザーは、DataMemberAttribute属性が適用されているその型のメンバーを無視します。

  • KnownTypes プロパティは、DataContractAttribute属性でマークされていない型でサポートされています。 これには、マークされていない型の KnownTypeAttribute 属性のサポートが含まれます。

  • パブリック メンバー、プロパティ、またはフィールドのシリアル化プロセスを "オプトアウト" するには、そのメンバーに IgnoreDataMemberAttribute 属性を適用します。

継承

マークされていない型 ( DataContractAttribute 属性を持たない型) は、この属性を持つ型から継承できますが、逆の処理は許可されません。属性を持つ型は、マークされていない型から継承できません。 この規則は、主に以前のバージョンの .NET Framework で記述されたコードとの下位互換性を確保するために適用されます。

こちらも参照ください