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++/CLI Discussion :

Petit probl�me de serialisation


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2006
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par d�faut Petit probl�me de serialisation
    Bonjour, dans une classe manag�e j'ai d'autres instances de classes manag�es. Pour s�rialiser et d�s�rialiser ma classe principale, j'appelle directement un Runtime::Serialization::Formatters::Binary::BinaryFormatter.
    Je rajoute l'attribut [Serializable] de l'assembleur au d�but de chaque d�claration de classe.

    Le probl�me c'est que lorsque je d�s�rialise l'instance de la classe principale � partir d'un fichier je ne r�cup�re que les variables de l'instance tandis que les instances de classes manag�es prennent leur valeur par d�faut. Est-ce qu'il serait possible de faire le plus simple possible pour contourner ce probl�me. Est-ce que par exemple il est n�cessaire d'utiliser l'interface ISerializable ?

    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
    31
    32
    33
    34
    35
    36
     
    [Serializable]
    public ref class A
    {
    public:
          // ...
    };
     
    [Serializable]
    public ref class B
    {
    public:
          // ...
          A ^pA;
    };
     
    int main(...)
    {
         Runtime::Serialization::Formatters::Binary::BinaryFormatter ^bf;
         bf = gcnew Runtime::Serialization::Formatters::Binary::BinaryFormatter;
         B ^instance;
         String ^filename = "...";
     
         // Serialisation
         IO::StreamWriter ^writer = gcnew IO::StreamWriter(filename);
         bf->Serialize(writer->BaseStream, instance);
         writer->Close();
     
         // Deserialisation
         IO::StreamReader ^reader = gcnew IO::StreamReader(filename);
         instance = (B^) (bf->Deserialize(reader->BaseStream));
         reader->Close();
     
         // A n'est pas initialisé à partir des paramètres déclarés à la sérialisation
         //...
    }

  2. #2
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    cela devrait, c'est fait pour, � partir du moment o� tes propri�t�s � s�rialiser sont publiques

  3. #3
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    La pr�sence d'un constructeur d�s�rialisant n'est-elle pas obligatoire pour la s�rialisation normale ?
    Ou est-elle seulement n�cessaire si on impl�mente ISerializable ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2006
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par d�faut
    J'ai oubli� un d�tail !
    En prenant l'exemple ci-dessus la classe A est dans une dll et la classe B dans une autre.
    J'appelle la s�rialisation dans mon application.
    C'est donc probable que j'utilise l'interface ISerializable non?

  5. #5
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2006
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par d�faut
    La pr�sence d'un constructeur d�s�rialisant n'est-elle pas obligatoire pour la s�rialisation normale ?
    Ou est-elle seulement n�cessaire si on impl�mente ISerializable ?
    La question que je pose est alors : "Comment est ce que je cr�e un constructeur de d�s�rialisation ?".
    (c'est la premi�re fois que j'utilise la s�rialisation avant j'utilisais IO pour enregistrer mes instances de classe )

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Dans la doc de ISerializable, ils d�crivent le constructeur d�s�rialisant: Il prend deux param�tres particuliers, qui contiennent les donn�es s�rialis�es...

    PS: � ma connaissance, on n'utilise pas ISerializable, on l'impl�mente.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. un petit probl�me d'algo
    Par supertramp dans le forum Algorithmes et structures de donn�es
    R�ponses: 22
    Dernier message: 12/10/2004, 20h13
  2. Petit probl�me de d�cimales !
    Par ridan dans le forum Langage SQL
    R�ponses: 5
    Dernier message: 11/09/2004, 21h24
  3. R�ponses: 17
    Dernier message: 13/07/2004, 20h37
  4. petit probl�me premier plan, arri�re plan
    Par gros bob dans le forum OpenGL
    R�ponses: 4
    Dernier message: 19/04/2004, 12h00
  5. [jointure] Petit probl�me sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    R�ponses: 13
    Dernier message: 13/02/2004, 18h55

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