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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta