VB.Net by API/System.Runtime.Serialization.Formatters.Soap/SoapFormatter

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

New SoapFormatter

<source lang="vbnet"> Imports System Imports System.Xml Imports System.Xml.Schema Imports System.IO Imports System.Data.OleDb Imports System.Data.rumon Imports System.Data.SqlClient Imports System.Data Imports System.Runtime.Serialization.Formatters Imports System.Runtime.Serialization.Formatters.Soap Imports System.Runtime.Serialization.Formatters.Binary Imports System.Xml.Serialization

Public Class MainClass

   Shared Sub Main()
       Dim Connection As SqlConnection = New SqlConnection("Server=(local)\SQLEXPRESS;Initial Catalog=MyDatabase;Integrated Security=SSPI")
     Dim MyDA As SqlDataAdapter = New SqlDataAdapter( _
        "SELECT * FROM Employee", Connection)
     Dim MyDS As DataSet = New DataSet()
     Dim MyDS2 As DataSet = New DataSet()
     MyDA.Fill(MyDS, "Employee")
     Dim s As Stream = File.Open("MyDS.soap", _
        FileMode.Create, FileAccess.ReadWrite)
     Dim sf As SoapFormatter = New SoapFormatter()
     sf.Serialize(s, MyDS)
     s.Close()
     Console.WriteLine("De-Serializing Graph from SOAP Envelope...")
   
     Dim r As Stream = File.Open("MyDS.soap", _
        FileMode.Open, FileAccess.Read)
     Dim sf2 As SoapFormatter = New SoapFormatter()
     MyDS2 = CType(sf2.Deserialize(r), DataSet)
     r.Close()
     Console.WriteLine( _
        "After Deserialization, MyDS2 contains {0} Employee", _
        MyDS2.Tables("Employee").Rows.Count)
   End Sub

End Class


 </source>


SoapFormatter.Deserialize

<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 ClsSerializable()
       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 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 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



 </source>


SoapFormatter.Serialize

<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 ClsSerializable()
       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.intNumber.ToString)
       Console.WriteLine(myClsSerializable.lngNumber.ToString)
       Console.WriteLine(myClsSerializable.strDemo)
               
   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 ClsSerializable

   Public intNumber As Integer = 254
   Public strDemo As String = "This is a poublic  test string"
   Private strpDemo As String = "This is a private  test string"
   <NonSerialized()> Public lngNumber As Long = 123456


End Class


 </source>