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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta