Bonjour à tous.

Je cherche à sérialiser une classe contenant une liste de classes :

Classe Voiture :
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
 
<Serializable()>
Public Class Voiture
 
    Private _marque As String
    Private _modele As String
 
    Public Sub New()
 
    End Sub
 
    Public Sub New(ByVal marque As String, ByVal modele As String)
        _marque = marque
        _modele = modele
    End Sub
 
    Public Property Marque As String
        Get
            Return _marque
        End Get
        Set(ByVal value As String)
            _marque = value
        End Set
    End Property
 
    Public Property Modele As String
        Get
            Return _modele
        End Get
        Set(ByVal value As String)
            _modele = value
        End Set
    End Property
 
End Class
Classe Voitures :
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
 
<Serializable()>
Public Class Voitures
 
    Private _lst As List(Of Voiture)
 
    Public Sub New()
        _lst = New List(Of Voiture)
    End Sub
 
    Public Function Nombre() As Integer
        Return _lst.Count
    End Function
 
    Public Sub Add(ByVal V As Voiture)
        _lst.Add(V)
    End Sub
 
    Public Function uneVoiture(ByVal index As Integer) As Voiture
        If index < _lst.Count Then
            Return _lst.Item(index)
        End If
        Return Nothing
    End Function
 
End Class
Code du form :
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
50
51
52
53
54
 
Imports System.IO
Imports System.Xml.Serialization
 
Public Class Form1
 
    Private _lstVoitures As Voitures
    Private _V As Voiture
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        _lstVoitures = New Voitures
        _lstVoitures.Add(New Voiture("Peugeot", "205"))
        _lstVoitures.Add(New Voiture("Peugeot", "405"))
        _lstVoitures.Add(New Voiture("Renault", "Laguna"))
 
        Try
            Me.Save(Of Voitures)(_lstVoitures, My.Application.Info.DirectoryPath & "\voitures.xml")
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
        _V = New Voiture("Renault", "Laguna")
 
        Try
            Me.Save(Of Voiture)(_V, My.Application.Info.DirectoryPath & "\voiture.xml")
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
    End Sub
 
    Private Sub Save(Of T)(ByVal tObject As T, ByVal strFilename As String)
        Try
            Dim objSW As New StreamWriter(strFilename, False, System.Text.Encoding.Default)
            objSW.Write(Me.Serialize(Of T)(tObject))
            objSW.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
 
    Private Function Serialize(Of T)(ByVal lst As T) As String
        Try
            Dim objXS As New XmlSerializer(GetType(T))
            Dim objSW As New StringWriter
            objXS.Serialize(objSW, lst)
            Return objSW.ToString()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        Return Nothing
    End Function
 
End Class
Lorsque je sérialise la classe Voiture, j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<?xml version="1.0" encoding="utf-16"?>
<Voiture xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Marque>Renault</Marque>
  <Modele>Laguna</Modele>
</Voiture>
Ce qui me convient parfaitement.

Cependant, lorsque je sérialise la classe Voitures, j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
<?xml version="1.0"?>
<articles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
Les données des voitures ne sortent pas.
Je sèche. Je ne trouve pas où est mon erreur.

Un coup de main, s'il vous please...