Tôi có một lớp Bar
có chứa List<Foo>
, với cả hai Foo
và Bar
triển khai ISerializable.Deserializing một lớp học có chứa một danh sách <T>: Tại sao Danh sách ban đầu đầy Nulls?
Khi deserializing Bar
, List<Foo>
ban đầu được điền đầy (số chính xác) null
s; sau đó, khi thoát khỏi cỗ máy khử giải trình tự, Bar
, mỗi sốcủa ctor deserialization được gọi là, điền vào List<Foo>
với (chính xác deserialized) Foo
s.
Tại sao điều này lại xảy ra? Tôi không thể sao chép nó trong một dự án thử nghiệm: bất cứ điều gì tôi đã thử đã dẫn đến các lò vi sóng khử trùng Foo
được gọi là trước ctor Bar
. Đây thực sự là hành vi tôi muốn, vì tôi cần danh sách được điền để thực hiện một số việc khởi tạo cho các yêu cầu Bar
!
Bất kỳ ai cũng có ý tưởng về điều gì có thể khiến cho Foo
giây bị hủy kích hoạt muộn? Cảm ơn!
Ngẫu nhiên, tôi đã có thể thực hiện việc khởi tạo yêu cầu sau khi deserializing nhưng trước khi trở về, sử dụng một phương thức với [OnDeserializedAttribute] (xem http://msdn.microsoft.com/en-us/library/system.runtime. serialization.ondeserializedattribute% 28v = VS.90% 29.aspx). –
Xem thêm http://stackoverflow.com/questions/1097797/custom-net-serialization-doesnt-seem-to-work; mặc dù không có câu trả lời tốt hơn ở đó. –