2013-09-02 10 views
6

Su MSDN si scrivonoFunziona Opzionalmente il Campo Opzionale?

campi possono essere contrassegnati come facoltativo applicando l'attributo OptionalFieldAttribute loro. Durante la deserializzazione, se mancano i dati opzionali , il motore di serializzazione ignora l'assenza e non genera un'eccezione.

Non riesco a ottenere un'eccezione. Ho provato a creare una classe, contrassegnarla con SerializableAttribute, serializzare un oggetto con BinaryFormatter e mantenere lo stato su un file su disco, quindi aggiungere due campi alla mia classe che non ho contrassegnato con OptionalFieldAttribute, e ho provato a deserializzare la classe oggetto indietro che ho appena persistito sul disco. Sono sorpreso che non sia stata lanciata alcuna eccezione?

risposta

7

La pagina MSDN citata non menziona questo, ma il comportamento predefinito è che in questo caso non verrà generata alcuna eccezione. Se un'eccezione è desiderato è necessario impostare la proprietà AssemblyFormat del BinaryFormatter per

System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full

Il valore predefinito è

System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple

Maggiori informazioni si possono trovare here.

Problemi correlati