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

VB.NET Discussion :

[VB.NET] Comment peut-on sérialiser une Collection ?


Sujet :

VB.NET

  1. #1
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut [VB.NET] Comment peut-on sérialiser une Collection ?
    Bonjour,
    J'ai une petite question, peut ont serialiser une collection et si oui comment par VB me rejette à chaque fois que j'essaye.

    J'utilise la serialisation binaire.
    Meme si je met une collection dans une class serialisable, je suis rejetté.
    C'est assez étrange, c'est pourquoi je me demande si c'est possible bine que ca m'étinnerais que ce ne soit pas possible.

    Merci d'avance,

    Nicolas
    " Je préfère comprendre les gens qui ne me comprennent pas "

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 191
    Points : 158
    Points
    158
    Par défaut
    bien sur que c'est possible... tu dois simplement mettre:devant chaque classe qui pourrait être sérialisée. Donc devant chaque classe pouvant être contenu par la collection... Enfin perso, je travaille en C# mais je suppose que c'est également valable en VB.NET

  3. #3
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Erf chez moi ca marche pas, je dois mal faire quelques choses, je poste un apercus du code :

    Voilà pour la class contenant la collection
    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
    <Serializable()> Public Class RefreshTab
     
    Private colClient As New Collection
     
    Public Sub setClient(ByVal obj As Object)
        colClient.Add(obj)
    End Sub
     
    Public Function getClient() As Collection
        Return colClient
    End Function
     
    Private action As String
    Public Sub setAction(ByVal paction As String)
        action = paction
    End Sub
     
    Public Function getAction() As String
        Return action
    End Function
     
    End Class
    et voilà pour la méthode de serialisation
    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
    Public Shared Function MemoryDeserialse(ByVal mem As MemoryStream) As Object
         Dim serializer As Runtime.Serialization.Formatters.Binary.BinaryFormatter = _
            New Runtime.Serialization.Formatters.Binary.BinaryFormatter
         Dim result As Object = Nothing
     
    Try
        If mem.Length = 0 Then Return False
            mem.Seek(0, SeekOrigin.Begin)
            result = serializer.Deserialize(mem)
            Return result
     
    Catch ex As SocketException
        MsgBox("MemoryDeserialse : " & ex.Message.ToString)
    Catch ex As Exception
        MsgBox("MemoryDeserialse : " & ex.Message.ToString)
    End Try
    End Function
    Si vous avez une idée,
    Merci d'avance
    " Je préfère comprendre les gens qui ne me comprennent pas "

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Peut être que celà n'est pas aisé par la serialisation binaire mais par contre par la sérialisation Xml cela devrait le faire
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 191
    Points : 158
    Points
    158
    Par défaut
    Si, si c'est tout à fait possible de sérialiser en binaire des objets contenant des collections pour la simple raison que je le fais tout le temps

    Je vois que ta classe possédant une collection a l'air de contenir des objet Client... As-tu mis également la balise [Serializable] devant cette classe Client ??? Tu dois le mettre devant toutes les classes de ta création susceptibles de se trouver sérialisées...
    Et le gros avantage, je pense, de la sérialisation binaire, c'est qu'elle te permet de sérialiser également les membres privés d'une classe, ce qui n'est pas permis avec la sérialisation XML...

  6. #6
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Oui justeent c'est cà que je ne comprend pas.

    voici la class stocké dans la collection

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <Serializable()> Public Class MessageGen
        ' HostName de la machine
        Public hostname As String = Net.Dns.GetHostName
     
        ' Nom d'alias du client
        Private nom As String
        Public Property pNom() As String
        Get
            Return nom
        End Get
        Set(ByVal Value As String)
            nom = Value
        End Set
        End Property
     
        ' Message à envoyer
        Private message As String
        Public Property pMessage() As String
        Get
            Return message
        End Get
        Set(ByVal Value As String)
            message = Value
        End Set
        End Property
     
        ' Server de connection
        Private srv As String
        Public Property server()
        Get
            Return srv
        End Get
        Set(ByVal Value)
            srv = Value
        End Set
        End Property
     
        ' Action à realiser
        Private action As String
        Public Sub setAction(ByVal pAction As String)
            Me.action = pAction
        End Sub
     
        Public Function getAction() As String
            Return action
        End Function
     
     
    End Class
    Par contre il y a une chose que je fais surement mal car su j'active l'option strict VB NET aime pas, c'est que je fais des conversions implicite entre deux objets, c'est à dire que je recupère des types [object] et les manipule comme des types [MessageGen], enfin ce genre de chose.
    En passant comment faire un vrai cast pour ce genre de cas, car le deserialisation renvois un type [object].

    Je continus mes investigations ....
    Merci,
    " Je préfère comprendre les gens qui ne me comprennent pas "

  7. #7
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    c'est bon j'ai trouve d'ou cela venait
    en fait au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private colClient As New Collection
    Il fallait mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private colClient As New Collections.ArrayListe
    Comme quoi c'était pas grand chose, maintenant il faut que je me renseigne sur la différence entre les deux, parce que derrière dans les deux cas je recuperais bien mes infos ( avant la serialisation )

    Enfin merci en tout cas pour votre aide
    " Je préfère comprendre les gens qui ne me comprennent pas "

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

Discussions similaires

  1. [VB.NET] Suppression d'objets dans une collection
    Par master56 dans le forum VB.NET
    Réponses: 7
    Dernier message: 03/06/2010, 21h46
  2. Réponses: 3
    Dernier message: 20/10/2006, 19h50
  3. Réponses: 2
    Dernier message: 02/05/2006, 09h50
  4. Réponses: 3
    Dernier message: 16/02/2006, 18h43
  5. Comment peut-on dire : une bdd est petite, moyenne ou grosse
    Par Pierrinot dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 20/10/2004, 08h40

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