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 :

Désérialization ne marche pas


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut Désérialization ne marche pas
    Bonjour,

    Je voudrais sauvegarder un objet complet (ArrayOfPanels -- qui n'est autre q'un héritier de la classe ArrayList) dans un fichier binaire.
    J'ai déclaré ArrayOfPanels comme étant [Serializable] ainsi que les objets que je mets dedans.


    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
     
    public ArrayOfPanels DeSerializeObject(string file)
            {
                try
                {
                    ArrayOfPanels o = new ArrayOfPanels();
                    Stream stream = File.Open(file, FileMode.Open);
                    BinaryFormatter b = new BinaryFormatter();
                    o = (ArrayOfPanels)b.Deserialize(stream);
                    stream.Close();
                    return o;
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }
                return null;
            }
    Il semblerait que ça ne marche pas.
    Normal?

    Merci.
    Cordialement.
    Julien.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Salut,

    je voudrais sauvegarder un objet complet
    ton exemple montre la désérialisation, je suppose que tu arrives déjà à sérialiser le fichier.

    Il semblerait que ça ne marche pas.
    C'est à dire ? quelle(s) erreur(s) ? une exception ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut
    Salut Cybermaxs

    En regardant avec le débugger, je vois que la désérialization ne s'est pas bien passée car le code suivant me retourne un objet de taille nulle alors que l'objet passé en sérialisation était de taille 2 (objet "o" dans la fonction ci-dessous).


    Le code de Sérialization:
    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
     
    public void SerializeObject(ArrayOfPanels o, string file)
            {
                try
                {
                    Stream stream = File.Open(file, FileMode.Create);
                    BinaryFormatter b = new BinaryFormatter();
                    b.Serialize(stream, o);
                    stream.Close();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }
            }
    Mon objet que je veux sérializer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [Serializable]
        public class ArrayOfPanels : System.Collections.ArrayList
        {
     
        }
    Les objets contenus dans ma classe ArrayOfPanels:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [Serializable]
        class MyPanelGeneric : Panel
        { 
        }

    Merci pour l'aide.
    Julien.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Citation Envoyé par rockline Voir le message

    Les objets contenus dans ma classe ArrayOfPanels:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [Serializable]
        class MyPanelGeneric : Panel
        { 
        }

    Merci pour l'aide.
    Julien.
    Tu n'essayerais pas de sérializer un panel par hasard ? Les contrôles Winforms ne sont pas marqués comme [Serializable].

    Autre remarque sur ta méthode : tu ne peux pas dire juste "ça ne marche pas", il faut avoir un peu plus de détails. Il doit y avoir une exception, qui dans ton cas est attrapée et affichée dans la console.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut
    Merci Cybermaxs.
    Je pense que tu as trouvé le problème.

    Cordialement.
    Julien.

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

Discussions similaires

  1. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 10h28
  2. Maximiser fenêtre ne marche pas
    Par sandrinec dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/06/2003, 13h02
  3. Réponses: 9
    Dernier message: 07/05/2003, 13h57
  4. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 11h43
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 14h23

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