Non è possibile - puro e semplice. L'attributo è necessario per DataContractSerializer per raccogliere gli elementi da serializzare. In contratto con XmlSerializer, che sostanzialmente serializza tutto (a meno che tu non dica esplicitamente di ignorarlo), DataContractSerializer è "opt-in" - devi dire esplicitamente (tramite gli attributi) quali campi e/o proprietà serializzare.
UPDATE: Come parecchie persone hanno fatto notare, con NET 3.5 SP1, Microsoft allentato queste regole un po '- ogni lettura pubblica/scrivere proprietà verrà serializzato automaticamente dal DataContractSerializer. Allo stesso tempo, la classe deve anche avere un costruttore senza parametri di default - suona come i requisiti esatti abbiamo avuto per XmlSerializer via del ritorno quando ....
Naturalmente, questo:
- non lo fa ti permette di serializzare qualcosa di privato - se vuoi serializzarlo, devi esporlo come proprietà pubblica di lettura/scrittura
- non ti permette di specificare un ordine scelto definito dei parametri - li userà semplicemente nel ordina che compaiano nella classe
- ora richiede di avere di nuovo un costruttore senza parametri nella tua classe deserializzazione
Continuo a pensare che queste cose debbano essere esplicite e chiare, rendendo quelle che non sono più necessarie apre la strada alla programmazione pigra/sciatta - Non mi piace. Ma se si vuole, si può utilizzare la società senza marcatura in modo esplicito le proprietà con [DataMember] .....
Marc
fonte
2009-04-24 05:20:26
Speravo davvero che ti saresti sbagliato, ma dopo molto google ho paura che tu abbia ragione. Non è possibile utilizzare XmlSerializer (problema di riferimento circolare che funziona con Entity Framework). Ah bene, classi anonime lo è. – aleemb
Beh, stavo leggendo un po 'di più su questo oggi, e qui ho scoperto che se le tue classi usate da DataContractSerializer sono marcate con [Serializable], allora per impostazione predefinita saranno serializzate in modo molto simile al formattatore SOAP vecchio stile - OGNI campo singolo indipendentemente dalla visibilità è incluso. Potrebbe esserti d'aiuto forse? –
Beh, non proprio perché il mio problema è che non posso toccare le classi generate automaticamente e devo essere in grado di ignorare esternamente i campi. Sto usando le proiezioni nelle mie query linq per aggirare questo ora che funziona bene. – aleemb