Je me suis souvent demandé dans ce cas comment stocker une liste d'objets en tant que propriété dans une classe et comment les sérialiser correctement en XML. Par exemple, nous avons une classe TabGroup qui contiendra zéro ou plusieurs Tabs.Stockage/sérialisation de la liste d'objets
Vaut-il mieux avoir une liste de propriétés Tabs ou une liste de références aux onglets? À condition que les onglets soient identifiés par des limaces uniques.
List<Tab>
List<string>
À la fin, il revient à
- sérialisation que l'ensemble graphique de TabGroup (qui contiendra tous ses onglets et leur contenu)
- sérialisation Tabgroups et onglets indenpendently et les maintaing séparent et référencé à travers la liste des slugs dans le graphe de Tabgroup sérialisé.
pro Le plus notable de 1:
- Tabgroup dans son ensemble est conservé dans un fichier sérialisé, en gardant la simple structure de datastore.
con le plus notable de 1:
- chaque fois qu'une mise à jour est faite à l'un des onglets contenus, Tabgroup doivent être mis à jour (reserialized) aussi.
Le plus notable de pro 2:
- mise à jour des onglets ne nécessite pas de reserialization Tabgroup (au moins quand rien n'a été ajouté ou supprimé) puisque les références restent les mêmes; donc seulement l'onglet mis à jour doit être sérialisé à nouveau.
con le plus notable de 2 (ce qui est la principale raison pour laquelle je vous écris ceci)
- individuels fichiers Tab peuvent être supprimés dans filestore mais la liste des références reste le même, si des erreurs/des exceptions se produisent lors de l'affichage/du rendu des groupes de tabulation; logique complexe devrait être mis en œuvre pour rendre quelque chose comme "Tab a été retiré de la banque de données de manière non supportée, supprimez-le du Tabgroup aussi?"
Que suggérez-vous pour résoudre ce problème? J'accepterai la réponse qui couvrira un large éventail d'implications. Veuillez noter que nous ne parlons ici que de la persistance XML, évidemment en SQL nous avons peu de place pour expérimenter puisque les Tabgroups et les Tabs seraient normalement dans des tables séparées de toute façon (avec une relation un-plusieurs entre eux).
Votre compréhension du problème était assez bonne et je suis d'accord que la liste est le choix le plus logique. –
mare