Manter informações de hierarquia xml (ou seja, pai-filho) em objetos gerados pelo XmlSerializer

há algum tempo venho tentando resolver o seguinte problema e estou começando a ficar sem ideias:

Eu gerou um conjunto de classes C # de um esquema xsd usando a ferramenta xsd.exe e deserializing arquivos xml funciona bem. O problema é que, além da conveniência e segurança de usar as classes geradas automaticamente, também preciso de informações sobre a hierarquia xml, ou seja, preciso estabelecer relacionamentos pai-filho entre os objetos criados durante a desserialização. Observe que eu quero evitar manter uma estrutura de hierarquia xml separada (como uma árvore DOM), mas fazer com que os objetos gerados controlem seus pais e filhos.

Eu consegui puxar isso em java usando JAXB por:

Definindo uma classe base comum para todos os objetos desserializados. Essa classe base contém uma lista de filhos e uma referência a um objeto pai (se houver).

Usando a funcionalidade Unmarshaller.Listener que fornece um retorno de chamada na desserialização de objeto concluída. Esse retorno de chamada fornece uma referência ao pai do objeto recém-desserializado, o que torna trivial estabelecer relacionamentos pai-filho.

Como eu iria fazer isso em c #? Eu dei uma olhada nos documentos do MSDN e fiz bastante googling, mas não consegui encontrar nenhuma informação útil.

questionAnswers(2)

yourAnswerToTheQuestion