Tipi serializzabiliSerializable Types

Per impostazione predefinita, DataContractSerializer serializza tutti i tipi visibili pubblicamente.By default, the DataContractSerializer serializes all publicly visible types. Vengono serializzati i campi e le proprietà di lettura/scrittura pubblici del tipo.All public read/write properties and fields of the type are serialized.

È possibile modificare il comportamento predefinito applicando gli attributi DataContractAttribute e DataMemberAttribute ai tipi e ai membri. Questa funzionalità può essere utile quando sono presenti tipi non controllati dall'utente e non modificabili per aggiungere attributi.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. DataContractSerializer riconosce tali tipi non contrassegnati.The DataContractSerializer recognizes such "unmarked" types.

Impostazioni predefinite di serializzazioneSerialization Defaults

È possibile applicare gli attributi DataContractAttribute e DataMemberAttribute per controllare in modo esplicito o personalizzare la serializzazione di tipi e membri.You can apply the DataContractAttribute and DataMemberAttribute attributes to explicitly control or customize the serialization of types and members. È inoltre possibile applicare tali attributi ai campi privati.In addition, you can apply these attributes to private fields. Tuttavia, anche i tipi non contrassegnati con questi attributi vengono serializzati e deserializzati.However, even types that are not marked with these attributes are serialized and deserialized. Vengono applicate le regole e le eccezioni seguenti:The following rules and exceptions apply:

  • Tramite DataContractSerializer viene dedotto un contratto dati dai tipi senza attributi usando le proprietà predefinite dei tipi appena creati.The DataContractSerializer infers a data contract from types without attributes using the default properties of the newly created types.

  • Vengono serializzati tutti i campi e le proprietà pubblici con metodi get e set pubblici, a meno che non venga applicato l'attributo IgnoreDataMemberAttribute a tale membro.All public fields, and properties with public get and set methods are serialized, unless you apply the IgnoreDataMemberAttribute attribute to that member.

  • La semantica di serializzazione è simile a quella di XmlSerializer.The serialization semantics are similar to those of the XmlSerializer.

  • Nei tipi non contrassegnati vengono serializzati solo i tipi pubblici con costruttori privi di parametri.In unmarked types, only public types with constructors that do not have parameters are serialized. L'eccezione a questa regola è ExtensionDataObject usato con l'interfaccia IExtensibleDataObject.The exception to this rule is ExtensionDataObject used with the IExtensibleDataObject interface.

  • I campi di sola lettura, le proprietà senza un metodo get o set e quelle con metodi set o get interni o privati non vengono serializzati.Read-only fields, properties without a get or set method, and properties with internal or private set or get methods are not serialized. Tali proprietà vengono ignorate e non viene generata alcuna eccezione, salvo nel caso di raccolte con sola funzione di accesso get.Such properties are ignored and no exception is thrown, except in the case of get-only collections.

  • Gli attributi XmlSerializer (ad esempio XmlElement, XmlAttribute, XmlIgnore, XmlInclude e così via) vengono ignorati.XmlSerializer attributes (such as XmlElement, XmlAttribute, XmlIgnore, XmlInclude, and so on) are ignored.

  • Se non si applica l'attributo DataContractAttribute a un tipo specificato, il serializzatore ignora qualsiasi membro del tipo a cui viene applicato l'attributo DataMemberAttribute.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.

  • La proprietà KnownTypes è supportata nei tipi non contrassegnati con l'attributo DataContractAttribute.The KnownTypes property is supported in types not marked with the DataContractAttribute attribute. È compreso il supporto per l'attributo KnownTypeAttribute nei tipi non contrassegnati.This includes support for the KnownTypeAttribute attribute on unmarked types.

  • Per rifiutare esplicitamente il processo di serializzazione per membri, proprietà o campi pubblici, applicare l'attributo IgnoreDataMemberAttribute a tale membro.To "opt out" of the serialization process for public members, properties, or fields, apply the IgnoreDataMemberAttribute attribute to that member.

EreditarietàInheritance

I tipi non contrassegnati (tipi senza l'attributo DataContractAttribute) possono ereditare da tipi che dispongono di tale attributo, ma l'operazione opposta non è consentita, pertanto i tipi con l'attributo non possono ereditare da tipi non contrassegnati.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. Questa regola viene applicata principalmente per garantire la compatibilità con il codice scritto in versioni precedenti di .NET Framework.NET Framework.This rule is enforced primarily to ensure backward compatibility with code written in earlier versions of .NET Framework.NET Framework.

Vedere ancheSee Also

IgnoreDataMemberAttribute
DataContractAttribute
DataMemberAttribute
XmlSerializer
Tipi supportati dal serializzatore dei contratti di datiTypes Supported by the Data Contract Serializer