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
aset
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 neboset
metody a vlastnosti s interními nebo privátnímiset
metodamiget
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
, ,XmlAttribute
XmlIgnore
,XmlInclude
atd.) 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.