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

C# Discussion :

Sérialisation ne marche pas depuis ApplicationSettingsBase


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut Sérialisation ne marche pas depuis ApplicationSettingsBase
    Bonjour,

    je charge mes Properties.Settings.Default au début de l'appli (Reload) et les sauve à la fermeture (Save).

    J'ai deux choses dans ces properties :
    - un booleen
    - un dictionaire de dictionnaire de string

    Seul l'état du premier se conserve d'une session de mon appli à l'autre. Pourquoi ?

    Merci.

  2. #2
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Please, aidez-moi à comprendre

    Voici à quoi ressemble mon user.config :

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    <userSettings>
    <Blah.Properties.Settings>
    <setting name="ViewCodes" serializeAs="String">
    <value>True</value>
    </setting>
    <setting name="Layouts" serializeAs="Xml">
    <value />
    </setting>
    </Blah.Properties.Settings>
    </userSettings>
    </configuration>
    On voit bien que la valeur de Layouts reste vide. Voici comment est définie la classe de l'objet Layout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    using System;
    using System.Collections.Generic;
    using System.Text;
     
    namespace Blah
    {
        public class ParametrageLayoutGridRecap : Dictionary<string, Dictionary<string, byte[]> >
        {
            // ... quelques methodes
        }
    }
    Faut-il que ma classe ParametrageLayoutGridRecap implémente une interface de sérialisation ?

  3. #3
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    J'ai essayé avec une classe Settings custom mais sans plus de succès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Configuration;
     
    namespace Blah
    {
        // Classe Singleton pour les settings
        public class SettingsBlah : ApplicationSettingsBase
        {
            private static SettingsBlah instance = ((SettingsBlah)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SettingsBlah())));
     
            public static SettingsBlah Instance { get { return instance; } }
     
     
            // Sérialisation en binaire, IDictionary n'est pas compatible XML
            [SettingsSerializeAs(SettingsSerializeAs.Binary)] 
            [UserScopedSetting()]
            public global::Blah.ParametrageLayoutGridRecap Layouts {
                get {
                    return ((global::EditeurBlah.ParametrageLayoutGridRecap)(this["Layouts"]));
                }
                set {
                    this["Layouts"] = value;
                }
            }
     
     
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.Serialization;
     
    namespace Blah
    {
        [Serializable()]
        public class ParametrageLayoutGridRecap : Dictionary< string, Dictionary< string, byte[] > >
        {
        }
    }
    Je vois bien, cette fois, que quelque chose se sérialise dans l'user.config, mais, lorsque je recharge, je récupère tout de même "null"...

    Quelqu'un pourrait-il m'éclairer svp ?

  4. #4
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    J'ai fini par faire une classe de dictionnaire qui implémente IXMLSerializable et l'affaire est réglée.

    Ah oui j'oubliais, merci pour vos contributions.

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

Discussions similaires

  1. css marche mais pas depuis les liens de la page index
    Par ak4774 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 30/03/2009, 15h26
  2. La sérialisation ne marche pas tres bien
    Par bassim dans le forum Général Java
    Réponses: 7
    Dernier message: 07/01/2008, 17h40
  3. Réponses: 13
    Dernier message: 14/09/2006, 21h30
  4. Redirection, ca ne marche pas depuis une page 404 ?
    Par TicTacToe dans le forum Langage
    Réponses: 16
    Dernier message: 02/03/2006, 10h54
  5. [APACHE] Marche en Local mais pas depuis l'exterieur
    Par ThanosT dans le forum Apache
    Réponses: 3
    Dernier message: 20/02/2006, 14h38

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