Modularité & Sérialisation XML [Résolu]

Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
- - Dernière réponse : Julien237
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
- 18 mars 2008 à 21:07
Bonjour,
J'ai une application utilisant une architecture de classes du style :

[XmlInclude(typeof(MyClassA)),
 XmlInclude(typeof(MyClassB))]
public class MyBigClass
{
   public MyAbstractClass MyClass {get; set;}

   ...
}

public abstract class MyAbstractClass {...}

public class MyClassA : MyAbstractClass {...}

public class MyClassB : MyAbstractClass {...}

Dans l'exécution de mon programme, je suis amené à sérialiser en xml des instances de MyBigClass. Jusque là, pas de problème.
Mainenant, j'aurais voulu que l'utilisateur puisse créer ses propres sous-classes de MyAbstractClass via des plug-in. Ces types ne sont plus repris dans les attributs XmlInclude de MyBigClass, et ne seront donc pas sérialisés (non ?).
Comment pourrais-je résoudre ce problème ?
Est-il possible d'ajouter des attributs dynamiquement à ma classe ? Ou une instruction permettant de faire XmlInclude d'une autre manière ?

S'il n'existe pas vraiment de solutions, c'est quand même un sacré frein à la modularité dans les applications utilisant la sérialisation xml, vous ne trouvez pas ?
<hr size="2" width="100%" />Julien.
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
11
3
Merci
Salut,

pour faire un système de plugin, tu dois pouvoir obtenir la liste des types des plugin, par exemple, en les marquant  avec un attribut que tu crées...

en fait, ensuite, il y a un constructeur qui prend un Type et un tableau d'autres types...dans ton cas :
new XmlSerializer(typeof(base),new Type[]{ ... liste des types dérivés de "base" ... })

sinon, le constructeur prenant en paramètre un XmlOverrides permet de redéfinir les attributs "statiquement appliqués dans le code" pour chaque type ou pour chaque membre d'un type les attributs XmlXXX appliqués....

ShareVB

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 136 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ShareVB
Messages postés
83
Date d'inscription
mardi 30 juillet 2002
Statut
Membre
Dernière intervention
13 février 2008
0
Merci
Bonjour,

J'ai exactement le même souci, j'aimerai rendre dynamique cette histoire de XmlInclude...
Si quelqu'un à la solution ?

Je continue mes recherches si je trouve je reviendrai dans le coin :)
Commenter la réponse de cs_Antony
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
11
0
Merci
salut,

dans le constructeur du XmlSerializer, il y a un paramètres "overrides" qui permet de redéfinir les attributs sur toutes les classes...

ShareVB
Commenter la réponse de ShareVB
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
0
Merci
Salut ShareVB,
Je comprends pas, tu peux développer ?

<hr size="2" width="100%" />Julien.
Commenter la réponse de Julien237
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
0
Merci
En effet je n'avais jamais fait attention à ce constructeur qui résout ce problème...
Merci !

<hr size="2" width="100%" />Julien.
Commenter la réponse de Julien237