Bonjour,

Je sais sérialiser/désérialiser en binaire une classe simple.
Mon but, maintenant est de sérialiser/désérialiser binaire un usercontrol.

Mon usercontrol est constitué d'un splitcontainer/TextBox/picturebox

Voici sont code :

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
63
64
65
66
67
68
69
70
 
Imports System.Runtime.Serialization
Imports System.Security.Permissions
Imports System.ComponentModel
 
<Serializable()>
Public Class TestUC
    Implements ISerializable
 
 
 
 
    '' A method called when serializing a TesTUC.
    <SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags:=SecurityPermissionFlag.SerializationFormatter)> _
    Public Sub GetObjectData(ByVal info As System.Runtime.Serialization.SerializationInfo, ByVal context As System.Runtime.Serialization.StreamingContext) Implements System.Runtime.Serialization.ISerializable.GetObjectData
        '' Instead of serializing this object, we will  serialize a UC instead.
        info.SetType(GetType(TestUC))
    End Sub
 
 
 
    Private _X As Double
    Private _Y As Double
    <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
    Property X As Double
        Get
            Return _X
        End Get
        Set(ByVal value As Double)
            _X = value
        End Set
    End Property
    <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
    Property Y As Double
        Get
            Return _Y
        End Get
        Set(ByVal value As Double)
            _Y = value
        End Set
 
    End Property
 
 
 
    Public Function GetText() As String
        RichTextBox1.Text = "Le point X est " & _X & " | le point  Y est " & _Y
        Return "Le point X est " & _X & " | le point  Y est " & _Y
    End Function
 
    Public Sub New()
 
        '' Cet appel est requis par le concepteur.
        InitializeComponent()
 
        '' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
 
    End Sub
 
    Public Sub New(ByVal X As Double, ByVal Y As Double)
 
        '' Cet appel est requis par le concepteur.
        InitializeComponent()
 
        '' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
        _X = X
        _Y = Y
        GetText()
    End Sub
End Class
Ma fonction de sérialisation a l'air de fonctionné, par contre ma fonction de désérialiser plante.
Ci-joint le message :
L'exception System.Runtime.Serialization.SerializationException n'a pas été gérée
Message=Le constructeur est introuvable pour désérialiser un objet de type 'Serialiser.TestUC'.
Ci joint ma fonction

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
 Public Function Deserialize(ByVal Dr As DataRow) As Object
        If IsNothing(Dr) Then Return Nothing
        Dim deserializer As Runtime.Serialization.Formatters.Binary.BinaryFormatter = _
        New Runtime.Serialization.Formatters.Binary.BinaryFormatter
        Dim Buffer() As Byte = dr.ItemArray(0)
        Dim stream As MemoryStream = New MemoryStream(Buffer)
        Dim result As New TestUC
        result = deserializer.Deserialize(stream)
        stream.Close()
        Return result
    End Function
Comment résoudre ce bug?
Est ce qu'il y a une meilleur méthode pour sérialiser/désérialiser un usercontrol?

Cordialement