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))