Comment sérialiser/désérialiser un usercontrol
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:
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 :
Citation:
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:
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