Serializovatelné typy

Ve výchozím nastavení DataContractSerializer serializuje všechny veřejně viditelné typy. Všechny veřejné vlastnosti pro čtení a zápis a pole typu jsou serializovány.

Výchozí chování můžete změnit použitím DataContractAttribute atributů DataMemberAttribute u typů a členů. Tato funkce může být užitečná v situacích, kdy máte typy, které nejsou pod vaším ovládacím prvkem, a nelze je upravit a přidat atributy. Rozpozná DataContractSerializer takové "neoznačené" typy.

Výchozí hodnoty serializace

Atributy a DataMemberAttribute atributy můžete použít DataContractAttribute k explicitní kontrole nebo přizpůsobení serializace typů a členů. Kromě toho můžete tyto atributy použít u privátních polí. Nicméně, i typy, které nejsou označeny těmito atributy jsou serializovány a deserializovány. Platí následující pravidla a výjimky:

  • Odvození DataContractSerializer datového kontraktu z typů bez atributů pomocí výchozích vlastností nově vytvořených typů.

  • Všechna veřejná pole a vlastnosti s veřejnými get a set metodami jsou serializovány, pokud u daného člena IgnoreDataMemberAttribute nepoužijete atribut.

  • Sémantika serializace se podobá XmlSerializersémantice .

  • V neoznačených typech jsou serializovány pouze veřejné typy s konstruktory, které nemají parametry. Výjimka tohoto pravidla se ExtensionDataObject používá s rozhraním IExtensibleDataObject .

  • Pole jen pro čtení, vlastnosti bez get metody nebo set metody a vlastnosti s interními nebo privátními set metodami get nejsou serializovány. Tyto vlastnosti jsou ignorovány a není vyvolán žádná výjimka, s výjimkou případů kolekcí pouze get.

  • XmlSerializeratributy (například XmlElement, , XmlAttributeXmlIgnore, XmlIncludeatd.) jsou ignorovány.

  • Pokud atribut nepoužijete DataContractAttribute na daný typ, serializátor ignoruje jakýkoli člen v daném typu, na který DataMemberAttribute je atribut použit.

  • Vlastnost KnownTypes je podporována v typech, které nejsou označené atributem DataContractAttribute . To zahrnuje podporu atributu KnownTypeAttribute u neoznačených typů.

  • Chcete-li se odhlásit z procesu serializace pro veřejné členy, vlastnosti nebo pole, použijte IgnoreDataMemberAttribute atribut pro tohoto člena.

Dědičnost

Neznačené typy (typy bez atributu DataContractAttribute ) můžou dědit z typů, které mají tento atribut. Obráceně však není povoleno: typy s atributem nemohou dědit z neoznačených typů. Toto pravidlo se vynucuje především kvůli zajištění zpětné kompatibility s kódem napsaným v dřívějších verzích rozhraní .NET Framework.

Viz také