Deserialization Callback : DeserializationCallback « Stream File « VB.Net Tutorial






Imports System
Imports System.IO
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.Runtime.Serialization.Formatters.Soap

Public Class Tester
    Public Shared Sub Main
    
        Dim myClsSerializable As New SerializeObject()
        SerializeBinary(myClsSerializable)
        Console.WriteLine(FileContent(False))
                

        Dim myFileStream As FileStream
        myFileStream = New FileStream("test.dat", FileMode.Open, FileAccess.Read)

        Dim myFormatter As New BinaryFormatter()
        myClsSerializable = CType(myFormatter.Deserialize(myFileStream), SerializeObject)

    End Sub
    Private Shared Function FileContent(ByVal blnBinary As Boolean) As String
        Dim strContent As String
        Dim myStreamReader As StreamReader
        Dim myFileStream As FileStream
        Dim i As Integer
        Try
            myFileStream = New FileStream("test.dat", FileMode.Open, FileAccess.Read)

            If blnBinary = True Then
                For i = 1 To myFileStream.Length
                    strContent += myFileStream.ReadByte.ToString + " "
                Next
            Else
                myStreamReader = New StreamReader(myFileStream)
                strContent = myStreamReader.ReadToEnd
            End If

            myFileStream.Flush()
            myFileStream.Close()
            Return strContent

        Catch ex As IOException
            Console.WriteLine(ex.Message)
        End Try

    End Function

    Private Shared Sub SerializeBinary(ByVal myClsSerializable As SerializeObject)
        Dim myFileStream As FileStream = New FileStream("test.dat", FileMode.Create, FileAccess.Write)
        Dim myBFormatter As BinaryFormatter = New BinaryFormatter()
        myBFormatter.Serialize(myFileStream, myClsSerializable)
        myFileStream.Flush()
        myFileStream.Close()
    End Sub
End Class


<Serializable()> _
Public Class SerializeObject
    Implements IDeserializationCallback

    Public firstNumber As Integer
    Public secondNumber As Integer
    <NonSerialized()> Public thirdNumber As Integer
    <NonSerialized()> Public forthNumber As Integer

    Public Sub New()
        firstNumber = 1000
        secondNumber = 2000
        thirdNumber = 100
        forthNumber = 200
    End Sub

    Public Sub OnDeserialization(ByVal sender As Object) _
       Implements IDeserializationCallback.OnDeserialization
       Console.WriteLine("OnDeserialization")
        thirdNumber = 100
    End Sub

End Class








13.27.DeserializationCallback
13.27.1.Deserialization Callback