mi sono imbattuto in questa domanda Transcender:Qual è la differenza tra la [OptionalField] e [NonSerialized]
Cosa si dovrebbe applicare a un campo se il suo valore non è richiesto durante la deserializzazione?
Me = [NonSerialized], RISPOSTA = [OptionalField]
La mia reazione istintiva era NonSerialised ma Transcender dice che sono sbagliate. Ho una buona idea su cosa guardare per quanto riguarda l'attributo [Nonseralized], ma comunque mi piacerebbe molto chiarire.
Per quanto posso dire, il primo ha una relazione con i conflitti di versione tra le versioni più recenti e precedenti dello stesso assembly. Quest'ultimo è più interessato a non serializzare un campo FULLSTOP. C'è qualcos'altro che potrebbe mettere questi due a parte? MSDN in realtà non dice molto su questo dato che entrambi sono usati su BinaryFormatters e SoapFormatter con XMLFormatter usando XMLIgnoreAttribute.
La mia seconda domanda è possibile combinare uno dei due attributi? Devo ancora usarli.
Basta lanciare questo fuori là, ma la mia risposta ha qualcosa a che fare con il modo in cui [OnDeserialized] e l'interfaccia IdeserilizationCallback è implementata?
UPDATE:
So che attributo campo facoltativo non serializzare il valore detenuto da un membro di dati, ma non sarà nemmeno NonSerialized puntate il membro dati o il suo valore.
Solo per completezza - per tutto ciò che riguarda lo spazio di archiviazione (vale a dire dove il controllo delle versioni diventa un problema), 'BinaryFormatter' potrebbe non essere una buona scelta.Vedo * un sacco * di persone con problemi quando si percorre questa strada. –
Grazie Marc, sono a conoscenza di questo problema, ma ho solo bisogno di capire bene questi due attributi per quanto riguarda l'esame 70-536. – IbrarMumtaz