Utrzymywanie hierarchii xml (np. Rodzic-dziecko) w obiektach generowanych przez XmlSerializer

od jakiegoś czasu próbuję rozwiązać następujący problem i zaczynam tracić pomysły:

Wygenerowałem zestaw klas C # ze schematu xsd za pomocą narzędzia xsd.exe i deserializowanie plików xml działa dobrze. Problem polega na tym, że oprócz wygody i bezpieczeństwa korzystania z automatycznie generowanych klas, potrzebuję także informacji o hierarchii xml, tzn. Muszę ustanowić relacje rodzic-dziecko między obiektami utworzonymi podczas deserializacji. Zauważ, że chcę uniknąć utrzymywania oddzielnej struktury hierarchii xml (jak drzewo DOM), ale raczej sprawić, aby wygenerowane obiekty śledziły ich rodziców i dzieci.

Udało mi się to zrobić w java używając JAXB przez:

Definiowanie wspólnej klasy bazowej dla wszystkich deserializowanych obiektów. Ta klasa bazowa zawiera listę dzieci i odwołanie do obiektu nadrzędnego (jeśli istnieje).

Korzystanie z funkcji Unmarshaller.Listener, która zapewnia wywołanie zwrotne po zakończeniu deserializacji obiektu. To wywołanie zwrotne stanowi odniesienie do rodzica ostatnio deserializowanego obiektu, co sprawia, że ​​ustanowienie relacji rodzic-dziecko staje się trywialne.

Jak mógłbym zrobić to w C #? Spojrzałem na dokumenty MSDN i zrobiłem sporo gogli, ale nie udało mi się znaleźć żadnych przydatnych informacji.

questionAnswers(2)

yourAnswerToTheQuestion