Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Standardmäßig serialisiert der DataContractSerializer alle öffentlich sichtbaren Typen. Alle öffentlichen Lese- und Schreibeigenschaften und Felder des Typs werden serialisiert.
Sie können das Standardverhalten ändern, indem Sie die DataContractAttribute und DataMemberAttribute Attribute auf die Typen und Member anwenden. Dieses Feature kann in Situationen nützlich sein, in denen Sie Typen haben, die nicht unter Ihrer Kontrolle stehen und nicht geändert werden können, um Attribute hinzuzufügen. Dies DataContractSerializer erkennt solche "nichtmarkierten" Typen.
Standardwerte für die Serialisierung
Sie können die Attribute DataContractAttribute und DataMemberAttribute anwenden, um die Serialisierung von Typen und Mitgliedern explizit zu steuern oder anzupassen. Darüber hinaus können Sie diese Attribute auf private Felder anwenden. Selbst Typen, die nicht mit diesen Attributen gekennzeichnet sind, werden serialisiert und deserialisiert. Es gelten die folgenden Regeln und Ausnahmen:
Der DataContractSerializer Datenvertrag wird aus Typen ohne Attribute abgeleitet, wobei die Standardeigenschaften der neu erstellten Typen verwendet werden.
Alle öffentlichen Felder und Eigenschaften mit öffentlichen
getUndsetMethoden werden serialisiert, es sei denn, Sie wenden das IgnoreDataMemberAttribute Attribut auf dieses Element an.Die Serialisierungssemantik ähnelt denen der XmlSerializer.
In nichtmarkierten Typen werden nur öffentliche Typen mit Konstruktoren, die keine Parameter enthalten, serialisiert. Die Ausnahme von dieser Regel betrifft die Verwendung von ExtensionDataObject mit der IExtensibleDataObject Schnittstelle.
Schreibgeschützte Felder, Eigenschaften ohne eine
get- oderset-Methode sowie Eigenschaften mit internen oder privatenset- oderget-Methoden werden nicht serialisiert. Diese Eigenschaften werden ignoriert, und es wird keine Ausnahme ausgelöst. Ausgenommen hiervon sind get-exklusive Auflistungen.XmlSerializer Attribute (wie
XmlElement,XmlAttribute,XmlIgnore,XmlIncludeund so weiter) werden ignoriert.Wenn Sie das DataContractAttribute Attribut nicht auf einen bestimmten Typ anwenden, ignoriert der Serializer alle Member in diesem Typ, auf die das DataMemberAttribute Attribut angewendet wird.
Die KnownTypes Eigenschaft wird in Typen unterstützt, die nicht mit dem DataContractAttribute Attribut gekennzeichnet sind. Dies schließt die Unterstützung des KnownTypeAttribute Attributs für nichtmarkierte Typen ein.
Um den Serialisierungsprozess für öffentliche Member, Eigenschaften oder Felder zu deaktivieren, wenden Sie das IgnoreDataMemberAttribute Attribut auf dieses Element an.
Vererbung
Nicht markierte Typen (Typen ohne Attribut DataContractAttribute ) können von Typen erben, die über dieses Attribut verfügen. Das Umgekehrte ist jedoch nicht zulässig: Typen mit dem Attribut können nicht von nicht markierten Typen erben. Diese Regel wird in erster Linie erzwungen, um die Abwärtskompatibilität mit Code sicherzustellen, der in früheren Versionen von .NET Framework geschrieben wurde.