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?