Bonjour, j’utilise dans un projet plusieurs classes et souhaite utiliser la méthode très astucieuse et pratique de Thomas Levesque, concernant les références circulaires lors la sérialisation. [
C#] Relation parent/enfant et sérialisation XML
Jeudi 11 juin 2009 — Thomas Levesque dans son excelent blog (http://tomlev.wordpress.com/tag/serialisation-xml/)
Mais voila tout se passe bien lors de la sérialisation mais la désérilisatopn ne se fait pas : Voici mes deux classes :
La classe Lots et la Classe Soumissions_Entreprises
La classe Soumissions_Entreprises reprend la classe Lots (voir plus bas):
Alors comment désérialiser cela !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Public Property _MyLot As New Lots Dim New_Soumissions As Soumissions_Entreprises = New Soumissions_Entreprises(Projet, "Thomas est le meilleur") With New_Soumissions .IChildItem_Parent = _MyLot End with _MyLot.ListSoumissions_Entreprises(New_Soumissions)
La classe LOTS
La classe Soumissions_Entreprises :
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 Namespace SMPE_ELT.Lots <Serializable()> Public Class Lots Inherits Element #Region "Constructeurs" Public Sub New() MyBase.New() End Sub Public Sub New(ByRef Projet As Projet, ByVal name As String) MyBase.New(Projet, name) ListSoumissions_Entreprises = New ChildItemCollection(Of Lots, Soumissions_Entreprises)(Me) End Sub #End Region Public Property ListSoumissions_Entreprises() As ChildItemCollection(Of Lots, Soumissions_Entreprises) Public Function SoumissionOffre_EntreprisesExist(ByVal _New_Soumissions As Soumissions_Entreprises) As Boolean For Each SoumissionOffre_Entreprise As Soumissions_Entreprises In ListSoumissions_Entreprises If _New_Soumissions.Entreprise.Equals(SoumissionOffre_Entreprise.Entreprise) And _New_Soumissions.Offre_LotSoumissionné.Equals(SoumissionOffre_Entreprise.Offre_LotSoumissionné) Then Return True End If Next Return False End Function Public Function AddSoumissionOffre_Entreprise(ByVal _New_Soumissions As Soumissions_Entreprises) As Boolean If Not SoumissionOffre_EntreprisesExist(_New_Soumissions) Then _New_Soumissions.Offre_LotSoumissionné = Me ListSoumissions_Entreprises.Add(_New_Soumissions) Return True Else Return False End If End Function End Class End Namespace
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 #Region "Imports" Imports System.Xml.Serialization Imports System.Globalization #End Region Namespace SMPE_ELT <Serializable()> Public Class Soumissions_Entreprises Inherits Element Implements IChildItem(Of Lots.Lots) #Region "IChildItem<Parent - Members" <XmlIgnore()> Public Property Offre_LotSoumissionné() As Lots.Lots 'Lots pour lesquelles l'entreprise soumissionne #Region "IChildItem<Parent> Members" Public Property IChildItem_Parent() As Lots.Lots _ Implements IChildItem(Of Lots.Lots).Parent Get Return Offre_LotSoumissionné End Get Set(ByVal value As Lots.Lots) Offre_LotSoumissionné = value End Set End Property #End Region #End Region #Region "Divers et variés" #End Region #Region "Constructeurs" Public Sub New() MyBase.New() End Sub Public Sub New(ByRef Projet As Projet, ByVal name As String) MyBase.New(Projet, name) End Sub #End Region End Class End Namespace
Partager