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 2.0]Comment sérialiser classe avec constructeur ?


Sujet :

VB.NET

  1. #1
    Membre régulier

    Inscrit en
    Décembre 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 85
    Points : 104
    Points
    104
    Par défaut [VB.NET 2.0]Comment sérialiser classe avec constructeur ?
    Bonjour,

    Je souhaite sérialiser des classes dans le but de les enregistrer dans un fichier XML.
    Ca marche tres bien ... jusqu'au moment ou je crée un constructeur.....
    En effet, des que j'ai crée un constructeur pour une des classes, et bien le processus de serialisaton me crée une exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Une erreur s'est produite lors de la réflexion du type 'essaiXML.Slideshows
    Alors voila, je vois pas trop quel est le prob..;
    Je pourrai faire sans constructeur, mais c pas très propre....

    Voici pour les declarations de classes :

    Code VB.NET : 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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Public Class Slideshows
     
        Public slideshow As slideshow()
     
        Public Function getNBSlideshows() As Integer
            ' retourne le nb de diaporama
            Return Me.slideshow.Length
        End Function
     
    End Class
     
    Public Class slideshow
     
        <XmlAttribute()> _
        Public titre As String = "Small bowel resection & anastomosis  in the pig"
        Public id As Integer = 0
     
        Public MD5 As String = "5A4E21BAC397E555F5"
     
        Public type As String = "Powerpoint"
        Public version As String = "11.0"
     
        Public date_de_modification As Date
        Public date_de_creation As Date
        Public derniere_diffusion As Date
     
        Public NBDiffusions As Integer = 0
     
        Public chapitres As chapitre()
        Public fichiers As fichier()
     
        Public Function donneNBFichiers() As Integer
            Return Me.fichiers.Length
        End Function
     
        Public Function donneNBChapitres() As Integer
            Return Me.chapitres.Length
        End Function
     
        Public Function AjouteChapitre(ByVal intitule As String, ByVal page As Integer, ByVal active As Boolean) As Boolean
            Dim nbChapitres As Integer
            If Not Me.chapitres Is Nothing Then
                nbChapitres = Me.chapitres.Length
            Else
                nbChapitres = 0
            End If
     
            ReDim Preserve chapitres(nbChapitres)
            chapitres(nbChapitres) = New chapitre(intitule, page, active)
     
        End Function
     
    End Class
     
    Public Class chapitre
        <XmlAttribute()> _
        Public intitule As String
        Public page As Integer
        Public active As Boolean
     
        Sub New(ByVal intitule As String, ByVal page As Integer, ByVal active As Boolean)
            Me.intitule = intitule
            Me.page = page
            Me.active = active
        End Sub
     
    End Class
     
    Public Class fichier
        Public nom As String = "video.mpg"
        Public MD5 As String = "5A4E21BAC397E555F5"
     
        Public taille As Double = 0
        Public date_de_modification As Date
        Public date_de_creation As Date
     
    End Class

    et voila pour le code :

    Code VB.NET : 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
    Dim obj As New Slideshows
            Dim ppt As New slideshow
     
            'ppt.titre = "Texte"
     
            ReDim obj.slideshow(2)
            obj.slideshow(0) = ppt
            obj.slideshow(1) = ppt
            obj.slideshow(2) = ppt
     
            ReDim obj.slideshow(0).fichiers(1)
            obj.slideshow(0).fichiers(0) = New fichier
            obj.slideshow(0).fichiers(1) = New fichier
     
     
            obj.slideshow(0).AjouteChapitre("Chapitre1", 22, True)
     
     
            Dim monSerializer As XmlSerializer = New XmlSerializer(GetType(Slideshows))
            Dim mywriter As StreamWriter = New StreamWriter("E:\Documents and Settings\Matt\Bureau\FichierXLM.xml")
            monSerializer.Serialize(myWriter, obj)
            myWriter.Close()

    C'est le constructeur "Sub New " qui pose probleme, et qui souleve l'exception lors du Dim monSerializer As XmlSerializer = New XmlSerializer(GetType(Slideshows))

  2. #2
    Membre régulier

    Inscrit en
    Décembre 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 85
    Points : 104
    Points
    104
    Par défaut
    arf... je viens de trouver.... juste après avoir posté ce message (c'est l'effet développez.com ^^ )

    En fait, il faut surcharger le constructeur par le constructeur de base, a savoir :

    En gros, a chaque fois que l'on veux serializer des classes qui contiennent un constructeur, il faut que le construteur de base soit present...

    c'est tout.

    Merci quand meme

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

Discussions similaires

  1. Classe avec constructeurs multiples
    Par lg_53 dans le forum C++
    Réponses: 31
    Dernier message: 26/09/2014, 01h26
  2. tableau de classe avec constructeur non copiable
    Par pixelou dans le forum Débuter
    Réponses: 3
    Dernier message: 22/02/2010, 23h09
  3. class avec constructeur déclarer en static
    Par tims12 dans le forum Langage
    Réponses: 4
    Dernier message: 29/12/2009, 17h58
  4. Héritage d'une classe avec constructeur privé
    Par Braillane dans le forum Langage
    Réponses: 13
    Dernier message: 02/09/2009, 11h59
  5. Réponses: 3
    Dernier message: 15/04/2008, 14h40

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