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):
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)
Alors comment désérialiser cela !!!
La classe LOTS
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
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
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