Mantener información de jerarquía xml (es decir, padre-hijo) en objetos generados por XmlSerializer

Hace tiempo que intento solucionar el siguiente problema y me estoy quedando sin ideas:

He generado un conjunto de clases de C # a partir de un esquema xsd usando la herramienta xsd.exe y deserializar archivos xml funciona bien. El problema es que, aparte de la conveniencia y seguridad de usar las clases generadas automáticamente, también necesito información sobre la jerarquía xml, es decir, necesito establecer relaciones padre-hijo entre los objetos creados durante la deserialización. Tenga en cuenta que quiero evitar mantener una estructura jerárquica xml separada (como un árbol DOM), pero hacer que los objetos generados hagan un seguimiento de sus padres e hijos.

Me las arreglé para lograr esto en java usando JAXB por:

Definición de una clase base común para todos los objetos deserializados. Esta clase base contiene una lista de elementos secundarios y una referencia a un objeto principal (si existe).

Uso de la funcionalidad Unmarshaller.Listener que proporciona una devolución de llamada en la deserialización completa de objetos. Esta devolución de llamada proporciona una referencia al elemento primario del objeto recientemente deserializado, lo que hace que el establecimiento de relaciones padre-hijo sea trivial.

¿Cómo voy a hacer esto en C #? He echado un vistazo a los documentos de MSDN y he hecho muchas búsquedas en Google, pero no he podido encontrar ninguna información útil.

Respuestas a la pregunta(2)

Su respuesta a la pregunta