Modularité & Sérialisation XML

Résolu
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 - 11 févr. 2008 à 16:27
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.

5 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
18 mars 2008 à 20:13
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
3
cs_Antony Messages postés 83 Date d'inscription mardi 30 juillet 2002 Statut Membre Dernière intervention 13 février 2008
13 févr. 2008 à 15:29
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 :)
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
15 mars 2008 à 12:20
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
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
16 mars 2008 à 16:22
Salut ShareVB,
Je comprends pas, tu peux développer ?

<hr size="2" width="100%" />Julien.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
18 mars 2008 à 21:07
En effet je n'avais jamais fait attention à ce constructeur qui résout ce problème...
Merci !

<hr size="2" width="100%" />Julien.
0
Rejoignez-nous