VB.Net by API/System.Runtime.Serialization/IDeserializationCallback

Материал из VB Эксперт
Перейти к: навигация, поиск

Implements IDeserializationCallback

<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>