Bonjour à tous,
Je ne parviens pas à sérialiser ma classe et je n'ai aucun message d'erreur, j'espère que vous pourrez m'aider.

Voici ma classe :
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
55
56
57
58
59
60
61
62
<Serializable>
Public Class SetupSys
    Private _Sections As New SortedList(Of String, SetupSysKeys)
    Public Sub Add(SectionName As String, Keys As SetupSysKeys)
        _Sections.Add(SectionName, Keys)
    End Sub
    Public ReadOnly Property Item(ByVal SectionName As String) As SetupSysKeys
        Get
            Return _Sections(SectionName)
        End Get
    End Property
 
End Class
<Serializable>
Public Class SetupSysKeys
    Public Keys As New SortedList(Of String, SetupSysKey)
 
    Public Sub Add(Key As SetupSysKey)
        Keys.Add(Key.KeyName, Key)
    End Sub
 
End Class
<Serializable>
Public Class SetupSysKey
    Private _KeyName As String
    Private _Min As Integer
    Private _Max As Integer
    Private _Step1 As Integer
    Public Sub New(KeyName As String)
        _KeyName = KeyName
    End Sub
    Public Sub New(KeyName As String, Optional Min As Integer = 0, Optional Max As Integer = 0, Optional Step1 As Integer = 0)
        Me.New(KeyName)
        _Min = Min
        _Max = Max
        _Step1 = Step1
    End Sub
    Public ReadOnly Property KeyName() As String
        Get
            Return _KeyName
        End Get
    End Property
 
    Public ReadOnly Property Min() As Integer
        Get
            Return _Min
        End Get
    End Property
 
    Public ReadOnly Property Max() As Integer
        Get
            Return _Max
        End Get
    End Property
 
    Public ReadOnly Property Step1() As Integer
        Get
            Return _Step1
        End Get
    End Property
 
End Class
Et voici comment je l'utilise :
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
    Public SetupSys1 As New SetupSys
    Private Sub InitSetupData()
 
        Dim Key1 As New SetupSysKey("Clé1", 0, 100, 5)
        Dim Key2 As New SetupSysKey("Clé2", 0, 50, 2)
        Dim Key3 As New SetupSysKey("Clé3", 0, 30, 1)
        Dim Key4 As New SetupSysKey("Clé4", 0, 30, 1)
 
        Dim Keys1 As New SetupSysKeys
        Keys1.Add(Key1)
        Keys1.Add(Key2)
        Keys1.Add(Key3)
        Keys1.Add(Key4)
 
        SetupSys1.Add("SysSetup", Keys1)
        Call SerializeSysKeys(Application.StartupPath & "\" & SYSSETUP_XML, SetupSys1)
 
    End Sub
    Private Sub LoadSetupData()
        Dim Clé1Min As Integer = SetupSys1.Item("SysSetup").Keys("Clé1").Min
    End Sub
 
    Private Sub SerializeSysKeys(ByVal Path As String, ByVal Objet As Object)
        Try
            Call SaveXmlData(Path, Objet)
        Catch ex As Exception
 
        End Try
    End Sub
 
    Private Sub SaveXmlData(ByVal Path As String, ByVal Objet As Object)
        Dim Type As Type = Objet.GetType
        Dim Serializeur As New XmlSerializer(Type)
        Dim Fi As New FileInfo(Path)
        If Fi.Directory.Exists = False Then System.IO.Directory.CreateDirectory(Fi.DirectoryName)
        'Sérialization
        Using fs As New FileStream(Path, FileMode.Create, FileAccess.Write)
            Serializeur.Serialize(fs, Objet)
            fs.Close()
        End Using
    End Sub
PS : Je ne suis qu'au début du codage et la structure de mon fichier XML ainsi que les classes ne sont pas encore figées donc je suis ouvert à toute suggestions.
Le but étant de stocker et récupérer des clés avec des valeurs organisées ainsi un peu à la manière des fichiers INI sauf que les valeurs sont multiples et connues à l'avance (Min, Max, Step1):
[SECTION1]
Clé1: Min=0, Max=100, Step1=5
Clé2: Min=0, Max=50, Step1=2
Clé3: Min=0, Max=30, Step1=1
[SECTION2]
....

De plus je dois pouvoir accéder aux valeurs simplement en utilisant intellisense comme ceci par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Dim Clé1Min As Integer = SetupSys1.Item("SysSetup").Keys("Clé1").Min