Serialisierbare TypenSerializable Types

Standardmäßig serialisiert der DataContractSerializer alle öffentlich sichtbaren Typen.By default, the DataContractSerializer serializes all publicly visible types. Alle öffentlichen Lese-/Schreibeigenschaften und Felder des Typs werden serialisiert.All public read/write properties and fields of the type are serialized.

Sie können das Standardverhalten ändern, indem Sie das DataContractAttribute-Attribut und das DataMemberAttribute-Attribut auf die Typen und Member anwenden. Diese Funktion ist hilfreich in Situationen mit Typen, die nicht von Ihnen gesteuert und nicht mit weiteren Attributen versehen werden können.You can change the default behavior by applying the DataContractAttribute and DataMemberAttribute attributes to the types and members This feature can be useful in situations in which you have types that are not under your control and cannot be modified to add attributes. Der DataContractSerializer erkennt solche nicht markierten Typen.The DataContractSerializer recognizes such "unmarked" types.

Standardwerte für die SerialisierungSerialization Defaults

Sie können das DataContractAttribute-Attribut und das DataMemberAttribute-Attribut anwenden, um die Serialisierung von Typen und Membern explizit zu steuern oder anzupassen.You can apply the DataContractAttribute and DataMemberAttribute attributes to explicitly control or customize the serialization of types and members. Darüber hinaus können Sie diese Attribute auf private Felder anwenden.In addition, you can apply these attributes to private fields. Doch auch Typen, die nicht mit diesen Attributen markiert sind, werden serialisiert und deserialisiert.However, even types that are not marked with these attributes are serialized and deserialized. Folgende Regeln und Ausnahmen gelten:The following rules and exceptions apply:

  • Der DataContractSerializer leitet einen Datenvertrag von Typen ohne Attribute unter Verwendung der Eigenschaften der neu erstellten Typen ab.The DataContractSerializer infers a data contract from types without attributes using the default properties of the newly created types.

  • Alle öffentlichen Felder sowie Eigenschaften mit öffentlicher get- oder set-Methode werden serialisiert, es sei denn, Sie wenden auf diesen Member das IgnoreDataMemberAttribute-Attribut an.All public fields, and properties with public get and set methods are serialized, unless you apply the IgnoreDataMemberAttribute attribute to that member.

  • Die Serialisierungssemantik gleicht der des XmlSerializer.The serialization semantics are similar to those of the XmlSerializer.

  • In nicht markierten Typen werden nur öffentliche Typen mit Konstruktoren serialisiert, die nicht über Parameter verfügen.In unmarked types, only public types with constructors that do not have parameters are serialized. Die Ausnahme dieser Regel bildet das ExtensionDataObject unter Verwendung der IExtensibleDataObject-Schnittstelle.The exception to this rule is ExtensionDataObject used with the IExtensibleDataObject interface.

  • Schreibgeschützte Felder, Eigenschaften ohne get- oder set-Methode sowie Eigenschaften mit interner oder privater set- oder get-Methode werden nicht serialisiert.Read-only fields, properties without a get or set method, and properties with internal or private set or get methods are not serialized. Diese Eigenschaften werden ignoriert, und es wird keine Ausnahme ausgelöst. Ausgenommen hiervon sind get-exklusive Auflistungen.Such properties are ignored and no exception is thrown, except in the case of get-only collections.

  • XmlSerializerAttribute (beispielsweise XmlElement, XmlAttribute, XmlIgnore, XmlInclude usw.) werden ignoriert.XmlSerializer attributes (such as XmlElement, XmlAttribute, XmlIgnore, XmlInclude, and so on) are ignored.

  • Wird das DataContractAttribute-Attribut nicht auf einen angegebenen Typ angewendet, ignoriert der Serialisierer jeden Member des Typs, auf den das DataMemberAttribute-Attribut angewendet wurde.If you do not apply the DataContractAttribute attribute to a given type, the serializer ignores any member in that type to which the DataMemberAttribute attribute is applied.

  • Die KnownTypes-Eigenschaft wird in Typen unterstützt, die nicht mit dem DataContractAttribute-Attribut markiert sind.The KnownTypes property is supported in types not marked with the DataContractAttribute attribute. Hierzu zählt die Unterstützung des KnownTypeAttribute-Attributs für nicht markierte Typen.This includes support for the KnownTypeAttribute attribute on unmarked types.

  • Sollen öffentliche Member, Eigenschaften oder Felder von der Serialisierung ausgenommen werden, wenden Sie das IgnoreDataMemberAttribute-Attribut auf den entsprechenden Member an.To "opt out" of the serialization process for public members, properties, or fields, apply the IgnoreDataMemberAttribute attribute to that member.

VererbungInheritance

Nicht markierte Typen (Typen ohne DataContractAttribute-Attribut) können von Typen erben, die dieses Attribut besitzen. Der umgekehrte Vorgang ist jedoch nicht möglich: Typen mit diesem Attribut können nicht von nicht markierten Typen erben.Unmarked types (types without the DataContractAttribute attribute) can inherit from types that do have this attribute; however, the reverse is not permitted: types with the attribute cannot inherit from unmarked types. Diese Regel wird in erster Linie deshalb erzwungen, um die Abwärtskompatibilität mit in früheren Versionen von .NET Framework.NET Framework geschriebenem Code sicherzustellen.This rule is enforced primarily to ensure backward compatibility with code written in earlier versions of .NET Framework.NET Framework.

Siehe auchSee Also

IgnoreDataMemberAttribute
DataContractAttribute
DataMemberAttribute
XmlSerializer
Vom Datenvertragsserialisierer unterstützte TypenTypes Supported by the Data Contract Serializer