Binary serialization and deserialization for a derived Class : Binary Serialization « Stream File « VB.Net Tutorial

Home
VB.Net Tutorial
1.Language Basics
2.Data Type
3.Operator
4.Statements
5.Date Time
6.Class Module
7.Development
8.Collections
9.Generics
10.Attributes
11.Event
12.LINQ
13.Stream File
14.GUI
15.GUI Applications
16.Windows Presentation Foundation
17.2D Graphics
18.I18N Internationlization
19.Reflection
20.Regular Expressions
21.Security
22.Socket Network
23.Thread
24.Windows
25.XML
26.Database ADO.net
27.Design Patterns
VB.Net
VB.Net by API
VB.Net Tutorial » Stream File » Binary Serialization 
13.24.4.Binary serialization and deserialization for a derived Class
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 ClsInherits()
        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), ClsSerializable)

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

            If blnBinary = True Then
                For i = 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 ClsSerializable)
        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 ClsInherits
    Inherits ClsSerializable

    Public intInNumber As Integer
    Public strInMessage As String

    Public Sub New()
        intInNumber = 1024
    End Sub

    Public Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext)
        MyBase.New(info, context)
        intInNumber = CInt(info.GetValue("n", intInNumber.GetType))
    End Sub

    Public Overrides Sub GetObjectData _
     (ByVal info As SerializationInfo, ByVal context As StreamingContext)
        MyBase.GetObjectData(info, context)
        info.AddValue("n", intInNumber)
    End Sub


End Class


<Serializable()> _
 Public Class ClsSerializable
              
    Implements ISerializable

    Public intNumber As Integer = 1000
    Public strMessage As String = "this is a string"
    Public lngTest As Long
    Public intArrayX(10As Integer
    Public intArrayY(10As Integer

    Public Sub New()
        ChangeMmberValue()
    End Sub

    Public Overridable Sub GetObjectData _
     (ByVal info As SerializationInfo, ByVal context As StreamingContext_
     Implements ISerializable.GetObjectData
        info.AddValue("intNumber", intNumber)
        info.AddValue("message", strMessage)
        info.AddValue("intArrayX", intArrayX)
    End Sub

    Public Sub New _
     (ByVal info As SerializationInfo, ByVal context As StreamingContext)

        intNumber = CInt(info.GetValue("intNumber", intNumber.GetType))
        strMessage = CStr(info.GetValue("message", strMessage.GetType))
        intArrayX = info.GetValue("intArrayX", intArrayX.GetType)
    End Sub
    Public Sub ChangeMmberValue()
        Dim As Integer
        For i = To 9
            intArrayX(i= i * 100
        Next i
        intNumber = 2000
        strMessage = "this is another string"
    End Sub
End Class
13.24.Binary Serialization
13.24.1.Class binary Serialization
13.24.2.Class binary deserialization
13.24.3.Binary serialization for a Class with ISerializable implementation
13.24.4.Binary serialization and deserialization for a derived Class
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.