|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
![]() ![]() ![]() ![]() Thomas LevesqueDéveloppeur .NET Inscription : février 2004 Messages : 17 770 ![]() |
Cette discussion est consacrée à l'article intitulé Aller plus loin avec la sérialisation XML. Vous pouvez y poster vos commentaires concernant l'article.
Synopsis : Citation:
__________________
Pas de questions techniques par MP ! Le forum est là pour ça... |
|
|
10
|
|
|
#2 |
|
Membre éprouvé
![]() ![]() |
Très bon article merci
__________________
Viva la viva... en el chorizo de la corida de leon.... (cette phrase n'a aucun sens je sais )
|
|
|
00
|
|
|
#3 | |
|
Expert Confirmé Sénior
![]() ![]() David Développeur informatique Inscription : mai 2005 Messages : 2 593 ![]() |
La partie concernant sgen m'intéresse. J'ai mis à jour une application en refondant un bloc d'objets métiers. La persistance est faite par sérialisation maintenant. Cela me permet en même temps de "simplifier" l'affichage des informations en passant par une transformation XSL basée sur le XML sérialisé.
Actuellement, au premier affichage il y a une lenteur. Normal car c'est lié à la génération dynamique de l'assembly pour manipuler les objets sérialisés comme indiqué dans l'article. J'ai donc voulu passer par sgen afin d'améliorer ça. Et j'ai malheureusement une erreur. L'erreur est du type Citation:
L'assembly contient différent objets métiers, tous ne devant pas être sérialisés. Pour le moment ce sont ces derniers qui gênent. La solution serait à priori de séparer en deux assemblies (à moins que l'on puisse marquer un type pour éviter que sgen ne le traite), mais j'aimerais bien comprendre ce qui bloque tout de même.
__________________
|
|
|
|
00
|
|
|
#4 | ||
![]() ![]() ![]() ![]() Thomas LevesqueDéveloppeur .NET Inscription : février 2004 Messages : 17 770 ![]() |
A priori c'est parce que tu as 2 types de même nom dans 2 namespaces différents, et que faute de précisions ils seront sérialisés avec le même nom d'élément XML.
Je suppose qu'en pratique ces 2 types ne sont pas sérialisés dans le même contexte, c'est pourquoi tu n'as pas d'erreur quand l'assembly de sérialisation est généré dynamiquement (parce que l'assembly généré ne prend en compte que les types qui peuvent être rencontrés dans le graphe de l'objet sérialisé). Donc je vois 2 solutions : - soit tu spécifies à sgen les types que tu veux sérialiser (par défaut il génère du code pour tous les types publics). Sgen n'a malheureusement pas d'option pour exclure un type... - soit tu appliques aux classes qui posent problème un attribut XmlType (j'aurais sans doute dû en parler dans le tuto d'ailleurs...) pour spécifier un nom de type XML différent pour les 2 classes : Code :
__________________
Pas de questions techniques par MP ! Le forum est là pour ça... |
||
|
00
|
|
|
#5 | ||
|
Expert Confirmé Sénior
![]() ![]() David Développeur informatique Inscription : mai 2005 Messages : 2 593 ![]() |
Pour sgen on peut spécifier un type (option /t), mais pas plusieurs à priori.
Je regarderais avec XmlType si effectivement ça corrige le problème, pour la culture personnelle. Au final j'ai mis les classes à sérialiser dans un assembly à part, avec une classe pour gérer la sérialisation des objets dans le contexte. C'est beaucoup plus propre ainsi. Et puis cela oblige à revoir un peu la chose et supprimer des liaisons un peu trop fortes parfois. Sinon le code de l'assembly ressemblait à quelque chose comme Code :
__________________
|
||
|
|
00
|
|
|
#6 | |
![]() ![]() ![]() ![]() Thomas LevesqueDéveloppeur .NET Inscription : février 2004 Messages : 17 770 ![]() |
Citation:
La solution d'un assembly séparé me semble pas mal en effet, d'autant plus que ça facilite la réutilisation
__________________
Pas de questions techniques par MP ! Le forum est là pour ça... |
|
|
00
|
|
|
#7 |
![]() ![]() ![]() ![]() Thomas LevesqueDéveloppeur .NET Inscription : février 2004 Messages : 17 770 ![]() |
Mise à jour
Une nouvelle section a été ajoutée à l'article : Contrôler dynamiquement si un membre doit être sérialisé
__________________
Pas de questions techniques par MP ! Le forum est là pour ça... |
|
00
|
Copyright © 2000-2013 - www.developpez.com