2009-05-15 25 views
6

Tôi có lớp A, thể hiện sự kiện. một đối tượng của lớp B đã đăng ký sự kiện. Cả hai trường hợp thực sự cũng giữ một tham chiếu thường xuyên để eachother. Tôi muốn tuần tự hóa A và có cả hai đối tượng được truyền qua dây, được xây dựng lại ở đầu kia. Điều này hoạt động tốt, ngoại trừ việc đăng ký sự kiện không được giữ lại.Nối tiếp sự kiện

Tôi nghĩ mình phải triển khai hàm tạo tuần tự hóa của riêng mình để 'được thông báo' khi đối tượng của tôi bị deserialized, vì vậy nó có thể đăng ký lại sự kiện.

Tuy nhiên, có vẻ như điều đó có nghĩa là tôi phải hoàn toàn tự thực hiện việc thu giữ bản thân bằng cách triển khai ISerializable. Tôi bây giờ dựa vào BinaryFormatter, và [Serializable] thuộc tính, và thực sự như thế rất nhiều.

Có ai biết cách để tôi nhận thông báo về việc deserialization, trong khi vẫn có thể sử dụng hệ thống serialization tích hợp để tự động serialize & deserialize đồ thị đối tượng hơi phức tạp của tôi cho tôi?

Cảm ơn, Lucas

Trả lời

8

Tiêu chuẩn (không XML) cơ chế serialization sử dụng thuộc tính đặc biệt để đánh dấu các phương pháp được sử dụng như callbacks trong (de) serialization. OnDeserializedAttribute là những gì bạn đang tìm kiếm. Giải pháp tương tự đang triển khai giao diện IDeserializationCallback.

+0

Câu trả lời hay. Tôi nhìn chằm chằm vào mã của tôi trong 2 giờ cố gắng tìm ra lý do tại sao sự kiện của tôi luôn là vô giá trị, mặc dù mã đăng ký hoạt động tốt. –

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