2011-10-12 34 views
6

Sử dụng .NET 4/C# ...Deserialize gõ có không gian tên đã thay đổi

tôi cần phải deserialize file cấu hình cũ có chứa các đại diện tuần tự của một loại tên, nói rằng, ns1.X. Việc serialization đã được thực hiện bằng cách sử dụng BinaryFormatter.

Vấn đề là, sau một vòng tái cấu trúc, loại X đã được chuyển đến một không gian tên khác, giả sử ns2.X.

Tôi đã cố gắng tạo ra một sản phẩm nào loại ns1.X mới có nguồn gốc từ ns2.X, và trong khi điều này có thể làm hỏng các 'Không thể tìm thấy loại ns1.X' lỗi, các thuộc tính trong đối tượng deserialized đều null . Ngoài ra, không có ctors được gọi trong quá trình này.

Mọi đề xuất?

+1

Không chắc chắn nếu điều này có thể giải quyết vấn đề của bạn vì tôi chưa bao giờ thực sự sử dụng nó, nhưng tôi nhớ đọc trên TypeForwarding một số thời gian trước đây: bạn có thể tìm thấy thông tin ở đây: http: // msdn .microsoft.com/vi-us/library/ms404275.aspx – Anton

+0

Thú vị. Tôi sẽ kiểm tra. –

+0

Tìm kiếm của Google tìm thấy điều này có thể hữu ích: http://www.codeproject.com/KB/cs/DrawWithMouse.aspx#AdvancedBinarySerialization:DeserializinganObjectIntoaDifferentTypeThantheOneItwasSerializedInto9 – Dan

Trả lời

1

Bạn sẽ cần phải sử dụng số ISerializationSurregate để thực hiện điều này. Nó không quá khó và Jeff Richter giải thích nó rất tốt. Tôi khuyên bạn nên cuốn sách của mình CLR Via C# 3.

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