2012-04-19 33 views
5

Tôi có nhiều đối tượng được tuần tự hóa được lưu dưới dạng XML, nhưng tôi muốn thêm 2 biến vào các đối tượng này.Làm thế nào để thay đổi một đối tượng được tuần tự hóa?

Đây là đối tượng của tôi:

public class MyObject{ 
    public Int32 MyVariables = 0; 
} 

Đối tượng này đã được xuất bản khá một chút, và tôi muốn giữ khả năng đọc những tập tin này "già" vào ứng dụng của tôi.

Nhưng tôi cần phải thêm một vài biến hơn để làm cho đối tượng tốt hơn, chẳng hạn như:

public class MyObject{ 
    public Int32 MyVariables = 0; 
    public Dictionary<string,MyEnum> MyDict = new Dictionary<string,MyEnum>(); 
} 

bất cứ ai có thể đề xuất các phương pháp tốt nhất để thêm các biến mới? Tôi thực sự đã thay đổi MyObject và thêm từ điển và tôi tin rằng nó không còn được đọc đúng nữa.

Cảm ơn trước!

Chỉnh sửa: Tôi cũng không thể nắm bắt được một ngoại lệ bất cứ nơi nào để xem nơi nó không thành công khi đọc trong đối tượng, tôi đang làm điều này để làm như vậy:

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); 
object obj = formatter.Deserialize(File.Open(Path, FileMode.Open)); 

Chỉnh sửa 2: Tôi tin rằng điều này thực sự có thể là do tôi sử dụng một Enum như một phần của từ điển, tôi thêm [Serializable] trên enum và nó vẫn không hoạt động - suy nghĩ?

Trả lời

4

Chỉ cần thêm các biến mới.

Nếu trình nối tiếp XML không tìm thấy biểu diễn thích hợp cho các biến mới, nó sẽ khởi tạo chúng với giá trị mặc định.

+0

Tôi nghĩ rằng điều này sẽ làm việc (thực sự nếu tôi chỉ làm cho một loại int so với từ điển nó, là một từ điển không serializable theo mặc định?) – Geesu

+0

Bạn không thể serialize một từ điển với XML Serializer. Có, tuy nhiên, cách giải quyết. Tôi sẽ cố gắng đào lên một liên kết. –

+1

Đây là một cách tiếp cận để sử dụng Từ điển với XML Serializer ... http://johnwsaunders3.wordpress.com/2009/03/10/one-way-to-serialize-dictionaries/ –

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