none
Cherche sample pour gérer ses settings dans un fichier XML RRS feed

  • Question

  • Bonjour

      J'ai actuellement un problème de persistance des settings en utilisant IsolatedStorageSettings. J'ai des utilisateurs qui perdent leurs données stockées :-(

      Pour éviter ca, je voudrais passer via un fichier XML qui contient tous mes settings. J'ai une partie des réponses via le poste de rudy : http://www.rudyhuyn.com/blog/2012/06/11/perennite-des-donnees-sous-windows-phone/ , mais si je comprend l'idée il manque pas mal d'élement technique pour mettre tout en musique. un des gros changement par rapport à ce que je fais aujourd'hui, c'est que je lirais tout d'un coup versus sur demande (ou presque)

      Je suis un peu noob sur la partie XML avec la serialisation et pas mal d'autre concept que je maitrise pas vraiment. Je voudrais également mettre tout ca au propre via une classe pour gérer l'ensemble. Comment ajouter un setting dans le fichier par exemple?, quelle structure à la grosse de classe construire?
      L'idée est de faire un truc réutilisable pour mes projets futurs.

      Est ce que quelqu'un aurait un sample de gestion de setting via un fichier XML?
     

    D'avance merci pour l'aide

    a+

    Olivier


    samedi 8 décembre 2012 10:51

Toutes les réponses

  • Comme j'ai eu le nez en plein dans la sérialisation pour mon appli en cours, je peux te dire deux choses, Déjà, il existe deux classes différentes permettant de sérialiser des classes en XML : XmlSerializer et DataContractSerializer.

    Les deux ont leur avantages et inconvénients respectifs. XmlSerializer permet un grand contrôle sur le XML généré, contrairement à l'autre classe, mais ne peux pas sérialisé de champs privés. Je te conseille de lire ce tutoriel pour commencer : sérialisation xml. Je te recommande de faire particulièrement attention au code de lecture, celui présenté fonctionne mais est facilement cassable avec un appel à Read() mal placé, ou l'ajout de champ dans ta classe.

    Vient ensuite le gros problème de l'héritage. Aussi embêtant que ça puisse paraître, si tu as une classe B qui dérive de A, tu ne peux pas sérialiser B en tant que A sans faire savoir à l'objet en charge de la sérialisation que B est un fils de A. Pour quelques classes, les ajouter à la main via un attribut sur la classe mère est faisable.

    Sinon, tu peux opter pour une solution qui ressemble à la mienne : la classe mère contient une liste des types connues, qui est passée à l'objet de sérialisation. Les classes filles, lors de leur instanciation, ajoute leur type à ce tableau des types connus.

    Pour ton problème, je te conseillerai de faire simple: mimer l'interface de IsolatedStorageSettings (c'est à dire, un tableau indexé par des strings), que tu pourra facilement sérialiser (parce que c'est une collection de types de bases, ça ne pose pas de problème me semble-t-il). Je pense que tu devrais pouvoir faire un truc qui marche avec le lien que je t'ai donné.

    Happy coding ^^

    edit : remarque, avec XmlSerializer, comme tu peux opter pour la structuration des données que tu veux, je pense qu'il y a moyen de lire le fichier avec Linq to XML si tu galères avec la désérialisation.
    • Modifié Unixorn samedi 8 décembre 2012 15:20
    samedi 8 décembre 2012 15:17
  • Merci, ca va me faire gagner pas mal de temps
    lundi 10 décembre 2012 20:46