2013-09-02 19 views
6

Na MSDN pisząCzy funkcja OptionalFieldAttribute działa?

Pola mogą być oznaczone jako opcjonalne stosując atrybut OptionalFieldAttribute do nich. Podczas deserializacji, jeśli brakuje opcjonalnych danych, silnik serializacji ignoruje nieobecność i nie generuje wyjątku.

Nie mogę uzyskać wyjątku. Próbowałem utworzyć klasę, oznaczyć ją SerializableAttribute, serializować obiekt za pomocą BinaryFormatter i utrzymywać stan do pliku na dysku, a następnie dodać dwa pola do mojej klasy, które nie zostały oznaczone opcją OptionalFieldAttribute, i próbowałem deserializować obiekt z powrotem, który po prostu upierał się na dysku. Jestem zaskoczony, że nie został zgłoszony żaden wyjątek?

Odpowiedz

7

Cytowana strona MSDN nie wspomina o tym, ale domyślne zachowanie polega na tym, że w tym przypadku nie zostanie zgłoszony żaden wyjątek. Jeśli pożądany jest wyjątek należy ustawić właściwość BinaryFormatterAssemblyFormat do

System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full

Wartość domyślna to

System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple

Więcej informacji można znaleźć here.