Antonio Esposito's


Prodotti tipici .NETtiani

DataContractSerializer + [Serializable] = opt-out non voluto

Ciao a tutti
Scrivo 2 parole per chiarire il comportamento del DataContractSerializer

Il DataContractSerializer è nuovo del .NET 3.0... introdotto con WCF è il suo serializzatore di default.
Il comportamento è opt-in (serializzo solo ciò che è esplicitato con degli attributi) ma solo se marchio la mia classe con l'attributo [DataContract] e i membri con [DataMember], altrimenti per le classi public serializza in automatico tutti i membri (opt-out) a loro volta public a meno di usare sui member l'attributo [IgnoreDataMember].

Quando la classe non è public ma marchiata dal [Serializable] utilizzato dal BinaryFormatter (o il Soap) mi trovo un approccio opt-out alla BinaryFormatter, cioè serializzando tutti i field, a meno di usare l'attributo [NonSerialized]. Ovviamente in questo caso serializzando i field mi troverò nell'xml i loro nomi, o quelli randomicamente generati per le property autoimplementate.

Ho notato anche che se marchio la mia classe con entrambi gli attributi, allora si comporta come farebbe di solito con il solo [DataContract].

 

Categoria: Tips
mercoledì, 20 gen 2010 Ore. 15.33
Statistiche
  • Views Home Page: 11.550
  • Views Posts: 60.340
  • Views Gallerie: 0
  • n° Posts: 44
  • n° Commenti: 16
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003