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
_
Public Class SerializeObject
Implements IDeserializationCallback
Public firstNumber As Integer
Public secondNumber As Integer
Public thirdNumber As Integer
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