Serialiserbara typer
Som standard DataContractSerializer serialiserar serialiseras alla offentligt synliga typer. Alla offentliga läs-/skrivegenskaper och fält av typen serialiseras.
Du kan ändra standardbeteendet genom att tillämpa attributen DataContractAttribute och DataMemberAttribute på typerna och medlemmarna Den här funktionen kan vara användbar i situationer där du har typer som inte står under din kontroll och inte kan ändras för att lägga till attribut. Identifierar DataContractSerializer sådana "omarkerade" typer.
Standardvärden för serialisering
Du kan använda attributen DataContractAttribute och DataMemberAttribute för att uttryckligen styra eller anpassa serialiseringen av typer och medlemmar. Dessutom kan du använda dessa attribut för privata fält. Men även typer som inte är markerade med dessa attribut serialiseras och deserialiseras. Följande regler och undantag gäller:
Härleder DataContractSerializer ett datakontrakt från typer utan attribut med standardegenskaperna för de nyligen skapade typerna.
Alla offentliga fält och egenskaper med offentliga
get
set
metoder och metoder serialiseras, såvida du inte använder attributet för den IgnoreDataMemberAttribute medlemmen.Serialiseringssemantiken liknar serialiseringssemantiken i XmlSerializer.
I omärkta typer serialiseras endast offentliga typer med konstruktorer som inte har parametrar. Undantaget till den här regeln används ExtensionDataObject med IExtensibleDataObject gränssnittet.
Skrivskyddade fält, egenskaper utan en eller
set
-get
metod och egenskaper med interna eller privataset
fält ellerget
metoder serialiseras inte. Sådana egenskaper ignoreras och inget undantag utlöses, förutom när det gäller samlingar med endast get.XmlSerializer attribut (till exempel
XmlElement
,XmlAttribute
,XmlIgnore
,XmlInclude
och så vidare) ignoreras.Om du inte tillämpar attributet på DataContractAttribute en viss typ ignorerar serialiseraren alla medlemmar i den DataMemberAttribute typen som attributet tillämpas på.
Egenskapen KnownTypes stöds i typer som inte har markerats med attributet DataContractAttribute . Detta inkluderar stöd för KnownTypeAttribute attributet för omärkta typer.
Om du vill "avregistrera" serialiseringsprocessen för offentliga medlemmar, egenskaper eller fält använder du attributet för den IgnoreDataMemberAttribute medlemmen.
Arv
Omarkerade typer (typer utan DataContractAttribute attributet) kan ärva från typer som har det här attributet, men det omvända tillåts inte: typer med attributet kan inte ärva från omärkta typer. Den här regeln tillämpas främst för att säkerställa bakåtkompatibilitet med kod som skrivits i tidigare versioner av .NET Framework.