2012-04-19 2 views
5

У меня есть много сериализованных объектов, сохраненных как XML, но я хотел бы добавить 2 переменных к этим объектам.Как изменить сериализованный объект?

Вот мой объект:

public class MyObject{ 
    public Int32 MyVariables = 0; 
} 

Этот объект был сериализовать совсем немного, и я хочу сохранить способность читать эти «старые» файлы в моем приложении.

Но мне нужно добавить еще несколько переменных, чтобы сделать объект лучше, например:

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

Может кто-нибудь предложить лучший способ, чтобы добавить эти новые переменные? Я фактически изменил MyObject и добавил словарь, и я считаю, что он больше не читается должным образом.

Заранее благодарен!

Edit: Я тоже не в состоянии поймать исключение в любом месте, чтобы увидеть, где он не при чтении объекта, я делаю это, чтобы сделать это:

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

Edit 2: Я считаю, что это на самом деле может быть из-за того, что я использовал Enum как часть словаря, я добавил [Serializable] над перечислением, и он все еще не работает - мысли?

ответ

4

Просто добавьте новые переменные.

Если XML-сериализатор не находит подходящего представления для новых переменных, он инициализирует их значениями по умолчанию.

+0

Я думал, что это сработает (на самом деле, если я просто создаю тип int vs. dictionary, который он делает, это словарь не сериализуется по умолчанию?) – Geesu

+0

Вы не можете сериализовать словарь с XML-сериализатором. Однако есть обходные пути. Я попытаюсь выкопать ссылку. –

+1

Вот один из способов использования словаря с XML-сериализатором ... http://johnwsaunders3.wordpress.com/2009/03/10/one-way-to-serialize-dictionaries/ –

Смежные вопросы