Tengo una clase base abstracta personalizada con subclases que he hecho serializable/deseriablizable con ISerializable. Cuando hago serialización/deserialización de instancias individuales de las subclases de esta clase, todo funciona bien. Sin embargo, cuando hago una serie de ellos siempre termino con una matriz de nulos en la deserialización. La serialización se realiza con BinaryFormatter.Deserialización de una matriz siempre da una matriz de nulos
Los elementos están contenidos dentro de una:
public ObservableCollection<Trade> Trades { get; private set; }
en la serialización esto se hace en GetObjectData en el parámetro SerializationInfo:
Trade[] trades = (Trade[])Trades.ToArray<Trade>();
info.AddValue("trades", trades);
Y en deserialización esto se hace en el constructor de serialización también en la Parámetro SerializationInfo:
Trade[] trades = (Trade[])info.GetValue("trades", typeof(Trade[]));
foreach (Trade t in trades)
{
Trades.Add(t);
}
Des erialization siempre me da una serie de valores nulos y como he mencionado antes, un solo elemento serializa y deseriaizes muy bien con este código:
serialización (método GetObjectData):
info.AddValue("trade", Trades.First<Trade>());
Deserialización (serialización Constructor):
Trade t = (Trade)info.GetValue("trade", typeof(Trade));
Trades.Add(t);
¿Este es un problema común? Parece que no hay ninguna otra persona corriendo al menos. Afortunadamente hay una solución :) y si necesito proporcionarle más información/código solo dígame.
Gracias!
Hola, ¿qué es la variable de información? ¿Cuál es el formato de serialización? Xml o binario? –
es la SerializationInfo que uso en GetObjectData y Serialization-constructor, lo siento, debería haberlo mencionado. – vesz
http://stackoverflow.com/questions/126155/c-array-xml-serialization ¿Alguna ayuda? – Polity