Desserialização de XML de objetos herdados

Eu tenho um objetoInputFile que tem matrizes e objetos para armazenar o conteúdo de um arquivo. eu também tenhoABCFile eXYZFile que são ambos herdados deInputFile que lerá diferentes tipos de arquivo e os armazenará nos membros projetados deInputFile.

Como a serialização e a desserialização de ambos os objetos são idênticas ao objeto pai, implementei uma interface de serialização XML padrão no objeto pai. Durante a desserialização, alguns parâmetros são lidos, umRead função é chamada (para carregar um arquivo), em seguida, a desserialização é concluída.

A serialização funciona muito bem, mas a desserialização (deList<InputFile>) não funciona porque o desserializador chama o stub de paisRead função de arquivo em vez deABCFile ouXYZFileé.

Como posso obter a desserialização para reconhecer o tipo correto de objeto a ser usado? É possível que meuList<InputFile> terá uma mistura de tipos de arquivos.

obrigado

O código que uso para serializar o 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
}

Alguma idéia de como manter o tipo de objeto quando eu costume serializar a lista?

questionAnswers(1)

yourAnswerToTheQuestion