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 :
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
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
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.
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
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
Partager