2013-09-02 41 views
6

On MSDN họ viếtThuộc tính OptionalFieldAttribute có thực sự hoạt động không?

Fields có thể được đánh dấu là bắt buộc bằng cách áp dụng các thuộc tính OptionalFieldAttribute đối với họ. Trong quá trình deserialization, nếu dữ liệu tùy chọn bị thiếu, công cụ tuần tự bỏ qua sự vắng mặt và không ném ngoại lệ.

Tôi không thể có ngoại lệ. Tôi đã cố gắng tạo một lớp, đánh dấu nó bằng SerializableAttribute, tuần tự hóa một đối tượng với BinaryFormatter và lưu trạng thái vào một tệp trên đĩa và sau đó thêm hai trường vào lớp của tôi mà tôi không đánh dấu bằng OptionalFieldAttribute và cố gắng deserialize đối tượng trở lại mà tôi chỉ tiếp tục tồn tại trên đĩa. Tôi ngạc nhiên rằng không có ngoại lệ nào được ném ra?

Trả lời

7

Trang MSDN được trích dẫn không đề cập đến điều này nhưng hành vi mặc định là không có ngoại lệ nào sẽ được ném trong trường hợp này. Nếu một ngoại lệ là mong muốn bạn phải thiết lập các AssemblyFormat tài sản của BinaryFormatter để

System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full

Giá trị mặc định là

System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple

Thông tin thêm có thể được tìm thấy here.

Các vấn đề liên quan