[dé]sérialisation et héritage
Bonjour,
voici ma problématique (simplifiée), je voudrais [dé]sérialiser deux listes d'objets sachant que la 2e liste référence des objets de la 1ere liste, mais avec des objets d'une classe-fille.
Ex: j'ai une liste de Véhicules et une liste de Voitures qui héritent de Véhicules.
La liste de Voitures référencent les données de la liste de Véhicules :
List<Véhicule>
véhicule1.type = "voiture"
véhicule1.nbRoues = 4
véhicule1.couleur = "blanc"
véhicule1.propriétaire = Propriétaire1
véhicule1.probleme = null
List<Voiture>
véhicule1.type = "voiture"
véhicule1.nbRoues = 4
véhicule1.couleur = "blanc"
véhicule1.propriétaire = Propriétaire1
véhicule1.probleme = null
voiture1.chassis = "Coupé"
Le problème est que lors de la sérialisation, on perd la notion d'héritage Véhicule/Voiture, et le fichier xml présentes les objets de la manière suivante :
Ce que je voudrais, c'est quelque chose comme ça, l'objet-fils référençant l'objet-mère et les valeurs de ses attributs propres :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <list> <Véhicule> <type>voiture</type> <nbRoues>4</nbRoues> ... <probleme /> </Véhicule> </list> <list> <Voiture> <type reference="Véhicule[0].type" /> <nbRoues reference="Véhicule[0].nbRoues" /> ... <chassis>Coupé</chassis> <Voiture> </list>
On voit mieux le problème si on valorise voiture1.probleme, c'est-à-dire un attribut-mère via l'objet-fils, le véhicule1.probleme n'est pas valorisé, et on aura :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7... <list> <Voiture reference="Véhicule[0]"> <chassis>Coupé</chassis> </Véhicule> </list>
Y-at'il une solution à ce problème, ou alors peut être que j'ai raté un détail qui rend mon problème insolvable. (sauf traitement des données de manière empirique, à chaque désérialisation, je peux retrouver qui référence qui et réinstancier les bons objets)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <list> <Véhicule> <type>voiture</type> <nbRoues>4</nbRoues> ... <probleme /> </Véhicule> </list> <list> <Voiture> <type reference="Véhicule[0].type" /> <nbRoues reference="Véhicule[0].nbRoues" /> ... <chassis>Coupé</chassis> <probleme>qqch</probleme> <Voiture> </list>
PS: si je ne suis pas clair, n'hésitez pas à demander des précisions.
Partager