Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per impostazione predefinita, DataContractSerializer serializza tutti i tipi visibili pubblicamente. Tutte le proprietà e i campi pubblici di lettura/scrittura del tipo vengono serializzati.
È possibile modificare il comportamento predefinito applicando gli DataContractAttribute attributi e DataMemberAttribute ai tipi e ai membri Questa funzionalità può essere utile nelle situazioni in cui si dispone di tipi che non sono sotto il controllo e non possono essere modificati per aggiungere attributi. DataContractSerializer Riconosce tali tipi "non marcati".
Impostazioni predefinite di serializzazione
È possibile applicare gli DataContractAttribute attributi e DataMemberAttribute per controllare in modo esplicito o personalizzare la serializzazione di tipi e membri. Inoltre, è possibile applicare questi attributi ai campi privati. Tuttavia, anche i tipi non contrassegnati con questi attributi vengono serializzati e deserializzati. Si applicano le regole e le eccezioni seguenti:
L'oggetto DataContractSerializer deduce un contratto dati dai tipi senza attributi usando le proprietà predefinite dei tipi appena creati.
Tutti i campi pubblici e le proprietà con metodi pubblici
getesetvengono serializzati, a meno che non si applichi l'attributo IgnoreDataMemberAttribute a tale membro.La semantica di serializzazione è simile a quella di XmlSerializer.
Nei tipi senza contrassegno vengono serializzati solo i tipi pubblici con costruttori che non dispongono di parametri. L'eccezione a questa regola viene ExtensionDataObject usata con l'interfaccia IExtensibleDataObject .
I campi di sola lettura, le proprietà senza un metodo
getoset, e le proprietà con un metodo internoseto privatogetnon vengono serializzati. Tali proprietà vengono ignorate e non viene generata alcuna eccezione, tranne nel caso delle raccolte get-only.XmlSerializer attributi (ad esempio
XmlElement,XmlAttribute,XmlIgnore,XmlInclude, e così via) vengono ignorati.Se non si applica l'attributo DataContractAttribute a un determinato tipo, il serializzatore ignora tutti i membri di quel tipo a cui viene applicato l'attributo DataMemberAttribute .
La KnownTypes proprietà è supportata nei tipi non contrassegnati con l'attributo DataContractAttribute . Ciò include il supporto per l'attributo KnownTypeAttribute sui tipi senza contrassegno.
Per rifiutare esplicitamente il processo di serializzazione per membri, proprietà o campi pubblici, applicare l'attributo IgnoreDataMemberAttribute a tale membro.
Ereditarietà
I tipi senza contrassegno (tipi senza DataContractAttribute attributo) possono ereditare dai tipi che dispongono di questo attributo. Tuttavia, il contrario non è consentito: i tipi con l'attributo non possono ereditare da tipi senza contrassegno. Questa regola viene applicata principalmente per garantire la compatibilità con le versioni precedenti del codice scritto nelle versioni precedenti di .NET Framework.