Deserialize

image_pdfimage_print
   
 

using System;
using System.IO;
using System.Text;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
class Employee : ISerializable {
    private string name;
    private int age;
    private string address;

    public Employee(string name, int age, string address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }

    private Employee(SerializationInfo info, StreamingContext context) {
        name = info.GetString("Name");
        age = info.GetInt32("Age");
        try {
            address = info.GetString("Address");
        } catch (SerializationException) {
            address = null;
        }
    }

    public string Name {
        get { return name; }
        set { name = value; }
    }

    public int Age {
        get { return age; }
        set { age = value; }
    }

    public string Address {
        get { return address; }
        set { address = value; }
    }

    public void GetObjectData(SerializationInfo inf, StreamingContext con) {
        inf.AddValue("Name", name);
        inf.AddValue("Age", age);

        if ((con.State & StreamingContextStates.File) == 0) {
            inf.AddValue("Address", address);
        }
    }

    public override string ToString() {
        StringBuilder str = new StringBuilder();

        str.AppendFormat("Name: {0}
", Name);
        str.AppendFormat("Age: {0}
", Age);
        str.AppendFormat("Address: {0}
", Address);

        return str.ToString();
    }
}

public class MainClass {
    public static void Main(string[] args) {
        Employee roger = new Employee("R", 56, "L");
        Console.WriteLine(roger);
        Stream str = File.Create("r.bin");
        BinaryFormatter bf = new BinaryFormatter();
        bf.Context = new StreamingContext(StreamingContextStates.CrossAppDomain);
        bf.Serialize(str, roger);
        str.Close();

        str = File.OpenRead("r.bin");
        bf = new BinaryFormatter();
        roger = (Employee)bf.Deserialize(str);
        str.Close();
        Console.WriteLine(roger);
        str = File.Create("r.bin");
        bf = new BinaryFormatter();
        bf.Context = new StreamingContext(StreamingContextStates.File);
        bf.Serialize(str, roger);
        str.Close();

        str = File.OpenRead("r.bin");
        bf = new BinaryFormatter();
        roger = (Employee)bf.Deserialize(str);
        str.Close();
        Console.WriteLine(roger);

    }
}

           
         
     


This entry was posted in File Stream. Bookmark the permalink.