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

Signaler
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
-
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
-
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

Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
14
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
Messages postés
83
Date d'inscription
mardi 30 juillet 2002
Statut
Membre
Dernière intervention
13 février 2008

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 :)
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
14
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
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
Salut ShareVB,
Je comprends pas, tu peux développer ?

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

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