2012-04-19 24 views
5

Tengo una gran cantidad de objetos serializados guardados como XML, pero me gustaría agregar 2 variables a estos objetos.¿Cómo cambiar un objeto serializado?

Aquí es mi objetivo:

public class MyObject{ 
    public Int32 MyVariables = 0; 
} 

Este objeto ha sido serializado un poco, y quiero mantener la capacidad de leer estos archivos "mayores" en mi aplicación.

Pero tengo que añadir unas cuantas más variables para que el objeto mejor, como por ejemplo:

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

¿Puede alguien sugerir el mejor método para agregar estas nuevas variables? De hecho, cambié MyObject y agregué el diccionario y creo que ya no se lee correctamente.

¡Gracias de antemano!

Editar: Yo también soy capaz de capturar una excepción en cualquier lugar para ver donde se produce un error durante la lectura en el objeto, que estoy haciendo esto para hacerlo:

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

Edición 2: Creo que esto en realidad puede ser debido a que use un Enum como parte del diccionario, agregué [Serializable] arriba de la enumeración y todavía no funciona - ¿pensamientos?

Respuesta

4

Solo agregue las nuevas variables.

Si el serializador XML no encuentra una representación adecuada para las nuevas variables, las inicializará con los valores predeterminados.

+0

Pensé que esto funcionaría (de hecho, si solo hago que el tipo sea un diccionario int, ¿no es un diccionario serializable por defecto?) – Geesu

+0

No puede serializar un diccionario con XML Serializer. Sin embargo, hay soluciones temporales. Intentaré desenterrar un enlace. –

+1

Aquí hay un enfoque para usar Dictionary with XML Serializer ... http://johnwsaunders3.wordpress.com/2009/03/10/one-way-to-serialize-dictionaries/ –

Cuestiones relacionadas