Deserialización XML de objetos heredados
Tengo un objetoInputFile
que tiene matrices y objetos para contener el contenido de un archivo. tambien tengoABCFile
yXYZFile
que son ambos heredados deInputFile
que leerán diferentes tipos de archivos y los almacenarán en los miembros proyectados deInputFile
.
Dado que la serialización y la deserialización de estos dos objetos son idénticas al objeto principal, he implementado una interfaz de serialización XML estándar en el objeto principal. Durante la deserialización se leen unos pocos parámetros, unRead
Se llama a la función (para cargar un archivo), luego finaliza la deserialización.
La serialización funciona muy bien, pero la deserialización (deList<InputFile>
) no funciona porque el deserializador llama al apéndice de los padresRead
función de archivo en lugar deABCFile
oXYZFile
's.
¿Cómo puedo obtener la deserialización para reconocer el tipo correcto de objeto a usar? Es posible que miList<InputFile>
tendrá una mezcla de tipos de archivos.
Gracias
El código que utilizo para serializar el objeto:
public class InputFileHolder : IXmlSerializable {
...
public void WriteXml(XmlWriter w) {
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlSerializer ifXml = new XmlSerializer(typeof(List<InputFile>));
ifXml.Serialize(w, InputFiles, ns);
//More serialization
}
¿Alguna idea de cómo mantener el tipo de objeto cuando personalizo serializar la Lista?