Generische Methode zur XML-Deserialisierung

Ich habe die nächste XML-Datei:

<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>

Ich deserialisiere es in diese Klasse:

[XmlRoot("Root", IsNullable = false)]
public class DocBalanceCollection
{
    [XmlElement("Document")]
    public List<DocBalanceItem> DocsBalanceItems = new List<DocBalanceItem>();
}

woherDocBalanceItem ist:

public class DocBalanceItem
{
    [XmlElement("Id")]
    public Guid DocId { get; set; }

    [XmlElement("Balance")]
    public decimal? BalanceAmount { get; set; }
}

Hier ist meine Deserialisierungsmethode:

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;
}

Alles funktioniert gut, aber ich habe viele XML-Dateien. Neben dem SchreibenItem Unterricht muss ich schreibenItemCollection Klassen für jeden von ihnen. Und das muss ich auch umsetzenDeserializeItems Methode für jeden.

Kann ich meine XML-Dateien deserialisieren, ohne sie zu erstellen?ItemCollection Klassen? Und kann ich eine einzige generische Methode schreiben, um alle zu deserialisieren?

Die einzige Lösung, die mir in den Sinn kommt - erstelle eine Schnittstelle für all diese Klassen. Irgendwelche Ideen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage