IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Framework .NET Discussion :

Sérialisation XML d'un Dictionary


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut Sérialisation XML d'un Dictionary
    Salut,

    Pour une application, j'ai besoin de sérialiser en XML un objet de type Dictionary. Malheureusement le XmlSerializer refuse de sérialiser un IDictionary... on dirait même que c'est fait exprès, vu le message d'erreur:
    NotSupportedException: Le type FooBar n'est pas pris en charge, car il implémente IDictionary.
    Pourtant la classe Dictionary<TKey, TValue> a l'attribut Serializable, et implémente ISerializable !!!
    Comme je trouvais ça bizarre, j'ai creusé un peu... a priori sérialiser un Dictionary revient à sérialiser une collection de KeyValuePair, donc ça devrait pas être impossible. Par curiosité j'ai essayé de sérialiser un KeyValuePair:
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                KeyValuePair<string, string> kvp = new KeyValuePair<string, string>("clé", "valeur");
                List<KeyValuePair<string, string>> lst = new List<KeyValuePair<string, string>>();
                lst.Add(kvp);
                StreamWriter wr = new StreamWriter(filename);
                XmlSerializer xs = new XmlSerializer(lst.GetType());
                xs.Serialize(wr, lst);
                wr.Close();
    Ce code s'éxécute sans problème, mais là, surprise...
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?xml version="1.0" encoding="utf-8"?>
    <ArrayOfKeyValuePairOfStringString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <KeyValuePairOfStringString />
    </ArrayOfKeyValuePairOfStringString>

    Le KeyValuePair sérialisé est vide ! Et je n'arrive pas à comprendre ça... pourtant ses 2 propriétés Key et Value sont publiques, et n'ont pas l'attribut XmlIgnore.

    Avez-vous une explication à ça ? Ou encore mieux, une solution pour pouvoir sérializer un Dictionary ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    ben en fait j'ai trouvé... il faut implémenter l'interface IXmlSerializable, mais dans la doc c'est bien planqué, ils indiquent pas quand une classe l'implémente !
    Le résultat est pas parfait, mais pour l'instant ça ira...
    Si ça intéresse quelqu'un:
    http://weblogs.asp.net/pwelter34/arc...03/444961.aspx

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de sérialisation XML d'une Array
    Par Abakai dans le forum C#
    Réponses: 3
    Dernier message: 21/05/2007, 15h30
  2. Sérialisation xml : fichier xml vide
    Par casafa dans le forum C#
    Réponses: 1
    Dernier message: 25/04/2007, 15h13
  3. [C# 2.0] Sérialisation XML avec PCDATA
    Par stailer dans le forum C#
    Réponses: 2
    Dernier message: 07/01/2007, 22h52
  4. Problème sérialisation XML [C#]
    Par AlphonseBrown dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/04/2006, 22h58
  5. [VB.NET] Sérialisation XML de Collections
    Par nico-pyright(c) dans le forum Windows Forms
    Réponses: 8
    Dernier message: 15/12/2004, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo