Método genérico de deserialización XML
Tengo el siguiente archivo XML:
<Root>
<Document>
<Id>d639a54f-baca-11e1-8067-001fd09b1dfd</Id>
<Balance>-24145</Balance>
</Document>
<Document>
<Id>e3b3b4cd-bb8e-11e1-8067-001fd09b1dfd</Id>
<Balance>0.28</Balance>
</Document>
</Root>
Lo deserializo a esta clase:
[XmlRoot("Root", IsNullable = false)]
public class DocBalanceCollection
{
[XmlElement("Document")]
public List<DocBalanceItem> DocsBalanceItems = new List<DocBalanceItem>();
}
dóndeDocBalanceItem
es:
public class DocBalanceItem
{
[XmlElement("Id")]
public Guid DocId { get; set; }
[XmlElement("Balance")]
public decimal? BalanceAmount { get; set; }
}
Aquí está mi método de deserialización:
public DocBalanceCollection DeserializeDocBalances(string filePath)
{
var docBalanceCollection = new DocBalanceCollection();
if (File.Exists(filePath))
{
var serializer = new XmlSerializer(docBalanceCollection.GetType());
TextReader reader = new StreamReader(filePath);
docBalanceCollection = (DocBalanceCollection)serializer.Deserialize(reader);
reader.Close();
}
return docBalanceCollection;
}
Todo funciona bien pero tengo muchos archivos XML. Además de escribirItem
clases tengo que escribirItemCollection
Clases para cada uno de ellos. Y también tengo que poner en práctica.DeserializeItems
Método para cada uno.
¿Puedo deserializar mis archivos XML sin crearItemCollection
clases? ¿Y puedo escribir un método genérico único para deserializar todos ellos?
La única solución que se me ocurre: crear una interfaz para todas estas clases. ¿Algunas ideas?