Mega Code Archive

 
Categories / VB.Net Tutorial / Socket Network
 

SOAP 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()         SerializeSoap(myClsSerializable)         Console.WriteLine(FileContent(False))                          Dim myFileStream As FileStream         myFileStream = New FileStream("test.dat", FileMode.Open, FileAccess.Read)         Dim myFormatter As New SoapFormatter()         myClsSerializable = CType(myFormatter.Deserialize(myFileStream), ClsSerializable)         Console.WriteLine(myClsSerializable.strMessage)     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 SerializeSoap(ByVal myClsSerializable As ClsSerializable)         Dim myFileStream As FileStream         Dim myBFormatter As SoapFormatter = New SoapFormatter()         Try             myFileStream = New FileStream("test.dat", FileMode.Create, FileAccess.Write)             myBFormatter.Serialize(myFileStream, myClsSerializable)             myFileStream.Flush()             myFileStream.Close()         Catch ex As Exception             Console.WriteLine(ex.Message)         End Try     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(10) As Integer     Public intArrayY(10) As 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 i As Integer         For i = 0 To 9             intArrayX(i) = i * 100         Next i         intNumber = 2000         strMessage = "this is another string"     End Sub End Class 2000 this is another string 1024 0 100 200 300 400 500 600 700 800 900 0 this is another string