Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 2009
-
11 févr. 2008 à 16:27
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDerniè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.
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 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....