<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VB.Net%2FFile_Directory%2FSerialize_Object</id>
		<title>VB.Net/File Directory/Serialize Object - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VB.Net%2FFile_Directory%2FSerialize_Object"/>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net/File_Directory/Serialize_Object&amp;action=history"/>
		<updated>2026-04-05T05:58:00Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VB.Net/File_Directory/Serialize_Object&amp;diff=878&amp;oldid=prev</id>
		<title> в 16:40, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net/File_Directory/Serialize_Object&amp;diff=878&amp;oldid=prev"/>
				<updated>2010-05-26T16:40:06Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 16:40, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VB.Net/File_Directory/Serialize_Object&amp;diff=879&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net/File_Directory/Serialize_Object&amp;diff=879&amp;oldid=prev"/>
				<updated>2010-05-26T12:45:26Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Save Serializable Object to binary file: create a sequential-access file==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt; &lt;br /&gt;
Imports System.IO&lt;br /&gt;
Imports System.Collections&lt;br /&gt;
Imports System.Windows.Forms&lt;br /&gt;
Imports System.Runtime.Serialization.Formatters.Binary&lt;br /&gt;
Imports System.Runtime.Serialization&lt;br /&gt;
Public Class MainClass&lt;br /&gt;
   Public Shared Sub Main()&lt;br /&gt;
         Dim formatter As BinaryFormatter = New BinaryFormatter()&lt;br /&gt;
         Dim output As FileStream&lt;br /&gt;
         Dim fileName As String = &amp;quot;test.dat&amp;quot;&lt;br /&gt;
         Dim employee As Employee = New Employee(&amp;quot;First Name&amp;quot;, &amp;quot;Last Name&amp;quot;)&lt;br /&gt;
         Try&lt;br /&gt;
            output = New FileStream(fileName,FileMode.OpenOrCreate, FileAccess.Write)&lt;br /&gt;
  &lt;br /&gt;
            formatter.Serialize(output, employee)&lt;br /&gt;
            output.Close()&lt;br /&gt;
  &lt;br /&gt;
         Catch fileException As FileNotFoundException&lt;br /&gt;
            Console.WriteLine(&amp;quot;File Does Not Exits&amp;quot;)&lt;br /&gt;
         Catch serializableException As SerializationException&lt;br /&gt;
            Console.WriteLine(&amp;quot;Error Writing to File&amp;quot;)&lt;br /&gt;
         Catch formattingException As FormatException&lt;br /&gt;
            Console.WriteLine(&amp;quot;Invalid Format&amp;quot;)&lt;br /&gt;
         Catch e As IOException&lt;br /&gt;
            Console.WriteLine(&amp;quot;Cannot close file&amp;quot;)&lt;br /&gt;
         End Try&lt;br /&gt;
   End Sub&lt;br /&gt;
End Class&lt;br /&gt;
&amp;lt;Serializable()&amp;gt; Public Class Employee&lt;br /&gt;
   Private firstName, lastName As String&lt;br /&gt;
   Public Sub New(ByVal first As String, ByVal last As String)&lt;br /&gt;
      firstName = first&lt;br /&gt;
      lastName = last&lt;br /&gt;
   End Sub &lt;br /&gt;
   Public Overrides Function ToString() As String&lt;br /&gt;
      Return firstName &amp;amp; &amp;quot; &amp;quot; &amp;amp; lastName&lt;br /&gt;
   End Function &lt;br /&gt;
End Class &lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Serializable Person Object==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;  &lt;br /&gt;
Imports System.IO&lt;br /&gt;
Imports System.Runtime.Serialization.Formatters.Binary&lt;br /&gt;
Imports System.Runtime.Serialization.Formatters.Soap&lt;br /&gt;
Public Class MainClass&lt;br /&gt;
    Public Shared Sub Main()&lt;br /&gt;
        Dim Bob As New SerializablePerson(&amp;quot;Bob&amp;quot;, 34, 5.25)&lt;br /&gt;
        Dim fs As New FileStream(&amp;quot;c:\bob.dat&amp;quot;, FileMode.Create)&lt;br /&gt;
        Dim f As System.Runtime.Serialization.IFormatter&lt;br /&gt;
        f = New SoapFormatter()&lt;br /&gt;
        &amp;quot;f = New BinaryFormatter()&lt;br /&gt;
        f.Serialize(fs, Bob)&lt;br /&gt;
        fs.Close()&lt;br /&gt;
        Bob = Nothing&lt;br /&gt;
        fs = New FileStream(&amp;quot;c:\bob.dat&amp;quot;, FileMode.Open)&lt;br /&gt;
        Bob = CType(f.Deserialize(fs), SerializablePerson)&lt;br /&gt;
        System.Console.WriteLine(Bob.Name)&lt;br /&gt;
        fs.Close()&lt;br /&gt;
    End Sub&lt;br /&gt;
End Class&lt;br /&gt;
&amp;lt;Serializable()&amp;gt; Public Class SerializablePerson&lt;br /&gt;
    Public Name As String&lt;br /&gt;
    Public Age As Integer&lt;br /&gt;
    Public Height As Integer&lt;br /&gt;
    Public Sub New()&lt;br /&gt;
    End Sub&lt;br /&gt;
    Public Sub New(ByVal Name As String, ByVal Age As String, _&lt;br /&gt;
      ByVal Height As String)&lt;br /&gt;
        Me.Name = Name&lt;br /&gt;
        Me.Age = Age&lt;br /&gt;
        Me.Height = Height&lt;br /&gt;
    End Sub&lt;br /&gt;
End Class&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Serialize Data to Binary and XML at the same time==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt; &lt;br /&gt;
Imports System&lt;br /&gt;
Imports System.IO&lt;br /&gt;
Imports System.Data&lt;br /&gt;
Imports System.Data.SqlClient&lt;br /&gt;
Imports System.Runtime.Serialization.Formatters.Binary&lt;br /&gt;
public class MainClass&lt;br /&gt;
   Shared Sub Main()&lt;br /&gt;
      &amp;quot;Create Connection object&lt;br /&gt;
      Dim thisConnection As New SqlConnection(&amp;quot;server=(local)\SQLEXPRESS;&amp;quot; &amp;amp; _&lt;br /&gt;
          &amp;quot;integrated security=sspi;database=MyDatabase&amp;quot;)&lt;br /&gt;
      Dim sql As String = &amp;quot;SELECT * FROM Employee&amp;quot;&lt;br /&gt;
      Dim fs As New FileStream(&amp;quot;Employee.bin&amp;quot;,FileMode.Create)&lt;br /&gt;
&lt;br /&gt;
      Try&lt;br /&gt;
         &amp;quot; Create Data Adapter&lt;br /&gt;
         Dim da As New SqlDataAdapter&lt;br /&gt;
         da.SelectCommand = New SqlCommand(sql, thisConnection)&lt;br /&gt;
         &amp;quot; Create and fill Dataset&lt;br /&gt;
         Dim ds As New DataSet&lt;br /&gt;
         da.Fill(ds, &amp;quot;Employee&amp;quot;)&lt;br /&gt;
         &amp;quot; Extract DataSet to XML file&lt;br /&gt;
         ds.WriteXml(&amp;quot;Employee.xml&amp;quot;)&lt;br /&gt;
         &amp;quot; Create binary formatter&lt;br /&gt;
         Dim bf As New BinaryFormatter()&lt;br /&gt;
         &amp;quot; Specify binary serialization for dataset&lt;br /&gt;
         ds.RemotingFormat = SerializationFormat.Binary&lt;br /&gt;
         &amp;quot; Output dataset&lt;br /&gt;
         bf.Serialize(fs, ds)&lt;br /&gt;
      Catch ex As SqlException&lt;br /&gt;
         Console.WriteLine(&amp;quot;Error: &amp;quot; &amp;amp; ex.ToString())&lt;br /&gt;
      Finally&lt;br /&gt;
         fs.Close()&lt;br /&gt;
         thisConnection.Close()&lt;br /&gt;
         Console.WriteLine(&amp;quot;Connection Closed&amp;quot;)&lt;br /&gt;
      End Try&lt;br /&gt;
   End Sub&lt;br /&gt;
End Class&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Serialize Object to XML Stream and output to screen==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt; &lt;br /&gt;
Imports System&lt;br /&gt;
Imports System.Xml&lt;br /&gt;
Imports System.Xml.Serialization&lt;br /&gt;
 &lt;br /&gt;
Public Class MainClass&lt;br /&gt;
    Shared Sub Main(  )&lt;br /&gt;
       Dim serialize As XmlSerializer = _&lt;br /&gt;
              New XmlSerializer(GetType(Order))&lt;br /&gt;
       Dim MyMovieOrder As Order = _&lt;br /&gt;
              New Order(&amp;quot;Name&amp;quot;, 101, 10)&lt;br /&gt;
       serialize.Serialize(Console.Out, MyMovieOrder)&lt;br /&gt;
       Console.Out.WriteLine()&lt;br /&gt;
    End Sub&lt;br /&gt;
  &lt;br /&gt;
End Class&lt;br /&gt;
Public Class Order&lt;br /&gt;
    Public name As String&lt;br /&gt;
    Public id As Integer&lt;br /&gt;
    Public quantity As Integer&lt;br /&gt;
    Public Sub New()&lt;br /&gt;
    End Sub&lt;br /&gt;
    Public Sub New(ByVal name As String, _&lt;br /&gt;
                   ByVal id As Integer, _&lt;br /&gt;
                   ByVal quantity As Integer)&lt;br /&gt;
        Me.name = name&lt;br /&gt;
        Me.id = id&lt;br /&gt;
        Me.quantity = quantity&lt;br /&gt;
    End Sub&lt;br /&gt;
End Class&lt;br /&gt;
  &lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Serialize to Xml==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Imports System&lt;br /&gt;
Imports System.IO&lt;br /&gt;
Imports System.Xml&lt;br /&gt;
Imports System.Xml.Serialization&lt;br /&gt;
    Public Class MainClass&lt;br /&gt;
        Public Shared Sub Main()&lt;br /&gt;
            Dim roster = New EmployeeCollection(DateTime.Now)&lt;br /&gt;
            Dim employees = New Employee() _&lt;br /&gt;
                {New Employee With {.Id = 1, .Name = &amp;quot;A&amp;quot;, _&lt;br /&gt;
                                    .Title = &amp;quot;Coder&amp;quot;, _&lt;br /&gt;
                                    .HireDate = DateTime.Now, _&lt;br /&gt;
                                    .HourlyRate = 100.0}, _&lt;br /&gt;
                 New Employee With {.Id = 4, .Name = &amp;quot;B&amp;quot;, _&lt;br /&gt;
                                    .Title = &amp;quot;Coder&amp;quot;, _&lt;br /&gt;
                                    .HireDate = DateTime.Now, _&lt;br /&gt;
                                    .HourlyRate = 100.75}}&lt;br /&gt;
            roster.Employees = employees&lt;br /&gt;
            Dim serializer As New XmlSerializer(GetType(EmployeeCollection))&lt;br /&gt;
            Dim fs As New FileStream(&amp;quot;EmployeeCollection.xml&amp;quot;, FileMode.Create)&lt;br /&gt;
            serializer.Serialize(fs, roster)&lt;br /&gt;
            fs.Close()&lt;br /&gt;
            roster = Nothing&lt;br /&gt;
            fs = New FileStream(&amp;quot;EmployeeCollection.xml&amp;quot;, FileMode.Open)&lt;br /&gt;
            roster = DirectCast(serializer.Deserialize(fs), EmployeeCollection)&lt;br /&gt;
            serializer.Serialize(Console.Out, roster)&lt;br /&gt;
        End Sub&lt;br /&gt;
    End Class&lt;br /&gt;
    &amp;lt;XmlRoot(&amp;quot;EmployeeCollection&amp;quot;)&amp;gt; _&lt;br /&gt;
    Public Class EmployeeCollection&lt;br /&gt;
        &amp;lt;XmlElement(ElementName:=&amp;quot;LastUpdated&amp;quot;, datatype:=&amp;quot;date&amp;quot;)&amp;gt; _&lt;br /&gt;
        Public LastUpdated As DateTime&lt;br /&gt;
        &amp;lt;XmlArray(&amp;quot;Employees&amp;quot;), XmlArrayItem(&amp;quot;Employee&amp;quot;)&amp;gt; _&lt;br /&gt;
        Public Employees As Employee()&lt;br /&gt;
        Public Sub New()&lt;br /&gt;
        End Sub&lt;br /&gt;
        Public Sub New(ByVal update As DateTime)&lt;br /&gt;
            Me.LastUpdated = update&lt;br /&gt;
        End Sub&lt;br /&gt;
    End Class&lt;br /&gt;
    Public Class Employee&lt;br /&gt;
        &amp;lt;XmlElement(&amp;quot;Name&amp;quot;)&amp;gt; _&lt;br /&gt;
        Public Name As String = String.Empty&lt;br /&gt;
        &amp;lt;XmlElement(&amp;quot;Title&amp;quot;)&amp;gt; _&lt;br /&gt;
        Public Title As String = String.Empty&lt;br /&gt;
        &amp;lt;XmlElement(ElementName:=&amp;quot;HireDate&amp;quot;, datatype:=&amp;quot;date&amp;quot;)&amp;gt; _&lt;br /&gt;
        Public HireDate As DateTime = Date.MinValue&lt;br /&gt;
        &amp;lt;XmlElement(&amp;quot;HourlyRate&amp;quot;)&amp;gt; _&lt;br /&gt;
        Public HourlyRate As Decimal = 0&lt;br /&gt;
        &amp;lt;XmlAttribute(AttributeName:=&amp;quot;id&amp;quot;, DataType:=&amp;quot;integer&amp;quot;)&amp;gt; _&lt;br /&gt;
        Public Id As String = String.Empty&lt;br /&gt;
        Public Sub New()&lt;br /&gt;
        End Sub&lt;br /&gt;
        Public Sub New(ByVal employeName As String, ByVal employeeTitle As String, ByVal employeeHireDate As DateTime, ByVal employeeHourlyRate As Decimal)&lt;br /&gt;
            Me.Name = employeName&lt;br /&gt;
            Me.Title = employeeTitle&lt;br /&gt;
            Me.HireDate = employeeHireDate&lt;br /&gt;
            Me.HourlyRate = employeeHourlyRate&lt;br /&gt;
        End Sub&lt;br /&gt;
    End Class&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Serializable Person Object==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;  &lt;br /&gt;
Imports System.IO&lt;br /&gt;
Public Class MainClass&lt;br /&gt;
    Public Shared Sub Main()&lt;br /&gt;
        Dim Bob As New Person(&amp;quot;Bob&amp;quot;, 34, 5.25)&lt;br /&gt;
        Bob.SaveToFile(&amp;quot;c:\a.bin&amp;quot;)&lt;br /&gt;
        Bob = Nothing&lt;br /&gt;
        Bob = Person.LoadFromFile(&amp;quot;c:\a.bin&amp;quot;)&lt;br /&gt;
        System.Console.WriteLine(Bob.Name)&lt;br /&gt;
    End Sub&lt;br /&gt;
End Class&lt;br /&gt;
Public Class Person&lt;br /&gt;
    Public Name As String&lt;br /&gt;
    Public Age As Integer&lt;br /&gt;
    Public Height As Integer&lt;br /&gt;
    Public Sub New()&lt;br /&gt;
    End Sub&lt;br /&gt;
    Public Sub New(ByVal Name As String, ByVal Age As String, ByVal Height As String)&lt;br /&gt;
        Me.Name = Name&lt;br /&gt;
        Me.Age = Age&lt;br /&gt;
        Me.Height = Height&lt;br /&gt;
    End Sub&lt;br /&gt;
    Public Sub SaveToFile(ByVal Filename As String)&lt;br /&gt;
        Dim fs As New FileStream(Filename, FileMode.Create)&lt;br /&gt;
        Dim w As New BinaryWriter(fs)&lt;br /&gt;
        w.Write(Name)&lt;br /&gt;
        w.Write(Age)&lt;br /&gt;
        w.Write(Height)&lt;br /&gt;
        w.Close()&lt;br /&gt;
    End Sub&lt;br /&gt;
    Public Shared Function LoadFromFile(ByVal Filename As String) As Person&lt;br /&gt;
        Dim fs As New FileStream(Filename, FileMode.Open)&lt;br /&gt;
        Dim r As New BinaryReader(fs)&lt;br /&gt;
        Dim NewPerson As New Person()&lt;br /&gt;
        NewPerson.Name = r.ReadString()&lt;br /&gt;
        NewPerson.Age = r.ReadInt32()&lt;br /&gt;
        NewPerson.Height = r.ReadInt32()&lt;br /&gt;
        r.Close()&lt;br /&gt;
        Return NewPerson&lt;br /&gt;
    End Function&lt;br /&gt;
End Class&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>