VB.Net Tutorial/Stream File/DeserializationCallback
Deserialization Callback
<source lang="vbnet">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</source>