Sdílet prostřednictvím


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. DataContractSerializer rozpoznává takové "neoznačené" typy.

Výchozí hodnoty serializace

Atributy DataContractAttribute a DataMemberAttribute můžete použít 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á sémantice XmlSerializer.

  • 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ána žádná výjimka, s výjimkou případů kolekcí, které jsou pouze pro čtení.

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

  • Pokud nepoužijete atribut DataContractAttribute na daný typ, serializátor ignoruje každý člen, na který je použit atribut DataMemberAttribute.

  • 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é