<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FFile_Directory_Stream%2FBinary_Serialization</id>
		<title>Csharp/CSharp Tutorial/File Directory Stream/Binary Serialization - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FFile_Directory_Stream%2FBinary_Serialization"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/File_Directory_Stream/Binary_Serialization&amp;action=history"/>
		<updated>2026-04-29T17:45:45Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/File_Directory_Stream/Binary_Serialization&amp;diff=6778&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/File_Directory_Stream/Binary_Serialization&amp;diff=6778&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:53Z</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;Версия 15:31, 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://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/File_Directory_Stream/Binary_Serialization&amp;diff=6779&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/File_Directory_Stream/Binary_Serialization&amp;diff=6779&amp;oldid=prev"/>
				<updated>2010-05-26T12:20:24Z</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;==Binary Custom Serialization==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Runtime.Serialization;&lt;br /&gt;
using System.Runtime.Serialization.Formatters.Binary;&lt;br /&gt;
[Serializable]&lt;br /&gt;
public class MyClass : ISerializable&lt;br /&gt;
{&lt;br /&gt;
  public string MyStringValue;&lt;br /&gt;
  public int MyIntValue;&lt;br /&gt;
  public MyClass(string s, int i){ &lt;br /&gt;
      MyStringValue = s; &lt;br /&gt;
      MyIntValue = i;&lt;br /&gt;
    }&lt;br /&gt;
  public void GetObjectData(SerializationInfo si, StreamingContext ctx)&lt;br /&gt;
  {&lt;br /&gt;
    Console.WriteLine(&amp;quot;[GetObjectData] Context State: {0}&amp;quot;, ctx.State.ToString());&lt;br /&gt;
    si.AddValue(&amp;quot;MyStringValue&amp;quot;, MyStringValue.ToUpper());&lt;br /&gt;
    si.AddValue(&amp;quot;MyIntValue&amp;quot;, MyIntValue);&lt;br /&gt;
  }&lt;br /&gt;
  private MyClass(SerializationInfo si, StreamingContext ctx)&lt;br /&gt;
  {&lt;br /&gt;
    Console.WriteLine(&amp;quot;[ctor] Context State: {0}&amp;quot;,ctx.State.ToString());&lt;br /&gt;
    MyStringValue = si.GetString(&amp;quot;MyStringValue&amp;quot;);&lt;br /&gt;
    MyIntValue = si.GetInt32(&amp;quot;MyIntValue&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
  public static int Main(string[] args)&lt;br /&gt;
  {&lt;br /&gt;
    MyClass myAuto = new MyClass(&amp;quot;Sid&amp;quot;, 50);&lt;br /&gt;
    Stream myStream = File.Create(&amp;quot;MyData.dat&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    BinaryFormatter myBinaryFormat = new BinaryFormatter();&lt;br /&gt;
    myBinaryFormat.Serialize(myStream, myAuto);&lt;br /&gt;
    myStream.Close();&lt;br /&gt;
    myStream = File.OpenRead(&amp;quot;MyData.dat&amp;quot;);&lt;br /&gt;
    MyClass carFromDisk = (MyClass)myBinaryFormat.Deserialize(myStream);&lt;br /&gt;
    Console.WriteLine(&amp;quot;{0} is alive!\n&amp;quot;, carFromDisk.MyStringValue);&lt;br /&gt;
    myStream.Close();&lt;br /&gt;
    return 0;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;[GetObjectData] Context State: All&lt;br /&gt;
[ctor] Context State: All&lt;br /&gt;
SID is alive!&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Customized Serialization==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Runtime.Serialization;&lt;br /&gt;
using System.Runtime.Serialization.Formatters.Binary;&lt;br /&gt;
[Serializable]&lt;br /&gt;
public class Employee : ISerializable&lt;br /&gt;
{&lt;br /&gt;
    public string name;&lt;br /&gt;
    public int age;&lt;br /&gt;
    public string address;&lt;br /&gt;
    public Employee(string name, int age, string address)&lt;br /&gt;
    {&lt;br /&gt;
        this.name = name;&lt;br /&gt;
        this.age = age;&lt;br /&gt;
        this.address = address;&lt;br /&gt;
    }&lt;br /&gt;
    private Employee(SerializationInfo info, StreamingContext context)&lt;br /&gt;
    {&lt;br /&gt;
        name = info.GetString(&amp;quot;Name&amp;quot;);&lt;br /&gt;
        age = info.GetInt32(&amp;quot;Age&amp;quot;);&lt;br /&gt;
        address = info.GetString(&amp;quot;Address&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    public void GetObjectData(SerializationInfo inf, StreamingContext con)&lt;br /&gt;
    {&lt;br /&gt;
        // Always serialize the Employee&amp;quot;s name and age.&lt;br /&gt;
        inf.AddValue(&amp;quot;Name&amp;quot;, name);&lt;br /&gt;
        inf.AddValue(&amp;quot;Age&amp;quot;, age);&lt;br /&gt;
        inf.AddValue(&amp;quot;Address&amp;quot;, address);&lt;br /&gt;
    }&lt;br /&gt;
    public override string ToString()&lt;br /&gt;
    {&lt;br /&gt;
        StringBuilder str = new StringBuilder();&lt;br /&gt;
        str.AppendFormat(&amp;quot;Name: {0}\r\n&amp;quot;, name);&lt;br /&gt;
        str.AppendFormat(&amp;quot;Age: {0}\r\n&amp;quot;, age);&lt;br /&gt;
        str.AppendFormat(&amp;quot;Address: {0}\r\n&amp;quot;, address);&lt;br /&gt;
        return str.ToString();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main(string[] args)&lt;br /&gt;
    {&lt;br /&gt;
        Employee anEmployee = new Employee(&amp;quot;Employee&amp;quot;, 6, &amp;quot;London&amp;quot;);&lt;br /&gt;
        Stream str = File.Create(&amp;quot;anEmployee.bin&amp;quot;);&lt;br /&gt;
        BinaryFormatter bf = new BinaryFormatter();&lt;br /&gt;
        bf.Context = new StreamingContext(StreamingContextStates.CrossAppDomain);&lt;br /&gt;
        bf.Serialize(str, anEmployee);&lt;br /&gt;
        str.Close();&lt;br /&gt;
        str = File.OpenRead(&amp;quot;anEmployee.bin&amp;quot;);&lt;br /&gt;
        bf = new BinaryFormatter();&lt;br /&gt;
        anEmployee = (Employee)bf.Deserialize(str);&lt;br /&gt;
        str.Close();&lt;br /&gt;
        Console.WriteLine(anEmployee);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Name: Employee&lt;br /&gt;
Age: 6&lt;br /&gt;
Address: London&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Implementing System.Runtime.Serialization.ISerializable==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Runtime.Serialization;&lt;br /&gt;
[Serializable]&lt;br /&gt;
class EncryptableDocument :ISerializable&lt;br /&gt;
{&lt;br /&gt;
  public EncryptableDocument(){ }&lt;br /&gt;
  enum Field&lt;br /&gt;
  {&lt;br /&gt;
      Title,&lt;br /&gt;
      Data&lt;br /&gt;
  }&lt;br /&gt;
  public string Title;&lt;br /&gt;
  public string Data;&lt;br /&gt;
  public static string Encrypt(string data)&lt;br /&gt;
  {&lt;br /&gt;
      string encryptedData = data;&lt;br /&gt;
      return encryptedData;&lt;br /&gt;
  }&lt;br /&gt;
  public static string Decrypt(string encryptedData)&lt;br /&gt;
  {&lt;br /&gt;
      string data = encryptedData;&lt;br /&gt;
      return data;&lt;br /&gt;
  }&lt;br /&gt;
  public void GetObjectData(SerializationInfo info, StreamingContext context)&lt;br /&gt;
  {&lt;br /&gt;
      info.AddValue(Field.Title.ToString(), Title);&lt;br /&gt;
      info.AddValue(Field.Data.ToString(), Encrypt(Data));&lt;br /&gt;
  }&lt;br /&gt;
  public EncryptableDocument(SerializationInfo info, StreamingContext context)&lt;br /&gt;
  {&lt;br /&gt;
      Title = info.GetString(Field.Title.ToString());&lt;br /&gt;
      Data = Decrypt(info.GetString(Field.Data.ToString()));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Serialization of an object list in binary form==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.Runtime.Serialization;&lt;br /&gt;
using System.Runtime.Serialization.Formatters.Binary;&lt;br /&gt;
using System.Runtime.Serialization.Formatters.Soap;&lt;br /&gt;
[Serializable]&lt;br /&gt;
public class MyElement&lt;br /&gt;
{&lt;br /&gt;
    public MyElement(string name)&lt;br /&gt;
    {&lt;br /&gt;
        this.name = name;&lt;br /&gt;
        this.cacheValue = 15;&lt;br /&gt;
    }&lt;br /&gt;
    public override string ToString()&lt;br /&gt;
    {&lt;br /&gt;
        return(String.Format(&amp;quot;{0}: {1}&amp;quot;, name, cacheValue));&lt;br /&gt;
    }&lt;br /&gt;
    string name;&lt;br /&gt;
    [NonSerialized]&lt;br /&gt;
    int cacheValue;&lt;br /&gt;
}&lt;br /&gt;
[Serializable]&lt;br /&gt;
public class MyElementList&lt;br /&gt;
{&lt;br /&gt;
    public void Add(MyElement my)&lt;br /&gt;
    {&lt;br /&gt;
        row.Add(my);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public override string ToString()&lt;br /&gt;
    {&lt;br /&gt;
        string temp = null;&lt;br /&gt;
        foreach (MyElement my in row)&lt;br /&gt;
            temp += my.ToString() + &amp;quot;\n&amp;quot;; &lt;br /&gt;
        return(temp);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    ArrayList row = new ArrayList();    &lt;br /&gt;
}&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        MyElementList row = new MyElementList();&lt;br /&gt;
        row.Add(new MyElement(&amp;quot;Gumby&amp;quot;));&lt;br /&gt;
        row.Add(new MyElement(&amp;quot;Pokey&amp;quot;));&lt;br /&gt;
        &lt;br /&gt;
        Console.WriteLine(&amp;quot;Initial value&amp;quot;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;{0}&amp;quot;, row);&lt;br /&gt;
        &lt;br /&gt;
        // write to binary, read it back&lt;br /&gt;
        Stream streamWrite = File.Create(&amp;quot;MyElementList.bin&amp;quot;);&lt;br /&gt;
        BinaryFormatter binaryWrite = new BinaryFormatter();&lt;br /&gt;
        binaryWrite.Serialize(streamWrite, row);&lt;br /&gt;
        streamWrite.Close();&lt;br /&gt;
        &lt;br /&gt;
        Stream streamRead = File.OpenRead(&amp;quot;MyElementList.bin&amp;quot;);&lt;br /&gt;
        BinaryFormatter binaryRead = new BinaryFormatter();&lt;br /&gt;
        MyElementList rowBinary = (MyElementList) binaryRead.Deserialize(streamRead);&lt;br /&gt;
        streamRead.Close();&lt;br /&gt;
        &lt;br /&gt;
        Console.WriteLine(&amp;quot;Values after binary serialization&amp;quot;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;{0}&amp;quot;, rowBinary);&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Initial value&lt;br /&gt;
Gumby: 15&lt;br /&gt;
Pokey: 15&lt;br /&gt;
Values after binary serialization&lt;br /&gt;
Gumby: 0&lt;br /&gt;
Pokey: 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Serialize object to binary form==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.Runtime.Serialization;&lt;br /&gt;
using System.Runtime.Serialization.Formatters.Binary;&lt;br /&gt;
[Serializable]&lt;br /&gt;
public class MyElement&lt;br /&gt;
{&lt;br /&gt;
    public MyElement(string name)&lt;br /&gt;
    {&lt;br /&gt;
        this.name = name;&lt;br /&gt;
        this.cacheValue = 15;&lt;br /&gt;
    }&lt;br /&gt;
    public override string ToString()&lt;br /&gt;
    {&lt;br /&gt;
        return(String.Format(&amp;quot;{0}: {1}&amp;quot;, name, cacheValue));&lt;br /&gt;
    }&lt;br /&gt;
    string name;&lt;br /&gt;
    [NonSerialized]&lt;br /&gt;
    int cacheValue;&lt;br /&gt;
}&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        MyElement ele = new MyElement(&amp;quot;name&amp;quot;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;Initial value&amp;quot;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;{0}&amp;quot;, ele);&lt;br /&gt;
        &lt;br /&gt;
        // write to binary, read it back&lt;br /&gt;
        Stream streamWrite = File.Create(&amp;quot;MyElement.bin&amp;quot;);&lt;br /&gt;
        BinaryFormatter binaryWrite = new BinaryFormatter();&lt;br /&gt;
        binaryWrite.Serialize(streamWrite, ele);&lt;br /&gt;
        streamWrite.Close();&lt;br /&gt;
        &lt;br /&gt;
        Stream streamRead = File.OpenRead(&amp;quot;MyElement.bin&amp;quot;);&lt;br /&gt;
        BinaryFormatter binaryRead = new BinaryFormatter();&lt;br /&gt;
        MyElement element = (MyElement) binaryRead.Deserialize(streamRead);&lt;br /&gt;
        streamRead.Close();&lt;br /&gt;
        &lt;br /&gt;
        Console.WriteLine(&amp;quot;Values after binary serialization&amp;quot;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;{0}&amp;quot;, element);&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Initial value&lt;br /&gt;
name: 15&lt;br /&gt;
Values after binary serialization&lt;br /&gt;
name: 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specify NonSerialized fields==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.Runtime.Serialization;&lt;br /&gt;
using System.Runtime.Serialization.Formatters.Binary;&lt;br /&gt;
[Serializable]&lt;br /&gt;
public class MyElement&lt;br /&gt;
{&lt;br /&gt;
    public MyElement(string name)&lt;br /&gt;
    {&lt;br /&gt;
        this.name = name;&lt;br /&gt;
        this.cacheValue = 15;&lt;br /&gt;
    }&lt;br /&gt;
    public override string ToString()&lt;br /&gt;
    {&lt;br /&gt;
        return(String.Format(&amp;quot;{0}: {1}&amp;quot;, name, cacheValue));&lt;br /&gt;
    }&lt;br /&gt;
    string name;&lt;br /&gt;
    [NonSerialized]&lt;br /&gt;
    int cacheValue;&lt;br /&gt;
}&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        MyElement ele = new MyElement(&amp;quot;name&amp;quot;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;Initial value&amp;quot;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;{0}&amp;quot;, ele);&lt;br /&gt;
        &lt;br /&gt;
        // write to binary, read it back&lt;br /&gt;
        Stream streamWrite = File.Create(&amp;quot;MyElement.bin&amp;quot;);&lt;br /&gt;
        BinaryFormatter binaryWrite = new BinaryFormatter();&lt;br /&gt;
        binaryWrite.Serialize(streamWrite, ele);&lt;br /&gt;
        streamWrite.Close();&lt;br /&gt;
        &lt;br /&gt;
        Stream streamRead = File.OpenRead(&amp;quot;MyElement.bin&amp;quot;);&lt;br /&gt;
        BinaryFormatter binaryRead = new BinaryFormatter();&lt;br /&gt;
        MyElement element = (MyElement) binaryRead.Deserialize(streamRead);&lt;br /&gt;
        streamRead.Close();&lt;br /&gt;
        &lt;br /&gt;
        Console.WriteLine(&amp;quot;Values after binary serialization&amp;quot;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;{0}&amp;quot;, element);&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Initial value&lt;br /&gt;
name: 15&lt;br /&gt;
Values after binary serialization&lt;br /&gt;
name: 0&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>