Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
getasetmetodami 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
getmetody nebosetmetody a vlastnosti s interními nebo privátnímisetmetodamigetnejsou 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.