Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Som standardinställning serialiserar DataContractSerializer alla publika 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
getochsetmetoder serialiseras, såvida du inte använder IgnoreDataMemberAttribute-attributet för den medlemmen.Serialiseringssemantiken liknar serialiseringssemantiken i XmlSerializer.
I omärkta typer serialiseras endast offentliga typer med konstruktorer som inte har parametrar. Undantaget från denna regel är ExtensionDataObject som används med IExtensibleDataObject-gränssnittet.
Skrivskyddade fält, egenskaper utan
get- ellerset-metoder och egenskaper med interna eller privataset- ellerget-metoder serialiseras inte. Sådana egenskaper ignoreras och inget undantag utlöses, förutom för samlingar som endast har getter.XmlSerializer attribut (till exempel
XmlElement,XmlAttribute,XmlIgnore,XmlIncludeoch 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 "välja bort" serialiseringsprocessen för offentliga medlemmar, egenskaper eller fält, tillämpa IgnoreDataMemberAttribute-attributet på den 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.