Using the binary reader and writer for psuedo-serialization : Class Serialization : Class C# Examples


C# Examples » Class » Class Serialization »

 

Using the binary reader and writer for psuedo-serialization









    
using  System;
using  System.Collections.Generic;
using  System.Collections.Specialized;
using  System.IO;
using  System.IO.Compression;
using  System.Net;
using  System.Net.Mail;
using  System.Runtime.InteropServices;
using  System.Text;


struct  Employee
{
        public  string  FirstName;
        public  string  LastName;
        public  int  Extension;
        public  string  SocialSecurityNumber;
        public  bool  Salaried;

        public  Employee(string  firstName,  string  lastName,  int  extension,  string  ssn,  bool  salaried)
        {
                this.FirstName  =  firstName;
                this.LastName  =  lastName;
                this.Extension  =  extension;
                this.SocialSecurityNumber  =  ssn;
                this.Salaried  =  salaried;
        }

        public  override  string  ToString()
        {
                return  string.Format("{0},  {1};  {2};  {3};  {4}",  LastName,  FirstName,  Extension,  SocialSecurityNumber,  Salaried);
        }
}

public  class  MainClass
{
        private  static  List<Employee>  CreateEmployees()
        {
                List<Employee>  emps  =  new  List<Employee>();
                emps.Add(new  Employee("J",  "D",  3,  "001-21-2232",  true));
                emps.Add(new  Employee("G",  "B",  5,  "001-21-0002",  true));
                emps.Add(new  Employee("J",  "R",  9,  "322-21-4321",  false));
                emps.Add(new  Employee("B",  "B",  3,  "331-22-1211",  true));
                emps.Add(new  Employee("H",  "S",  9,  "991-28-2777",  false));
                return  emps;
        }

        private  static  List<Employee>  DeserializeEmployees(Stream  s)
        {
                List<Employee>  employees  =  new  List<Employee>();
                BinaryReader  reader  =  new  BinaryReader(s);

                try
                {
                        while  (true)
                        {
                                Employee  e  =  new  Employee();
                                e.FirstName  =  reader.ReadString();
                                e.LastName  =  reader.ReadString();
                                e.Extension  =  reader.ReadInt32();
                                e.SocialSecurityNumber  =  reader.ReadString();
                                e.Salaried  =  reader.ReadBoolean();
                                employees.Add(e);
                                Console.WriteLine("Read:  {0}",  e.ToString());
                        }
                }
                catch  (EndOfStreamException)
                {
                }

                return  employees;
        }

        private  static  void  SerializeEmployees(Stream  s,  IEnumerable<Employee>  employees)
        {
                BinaryWriter  writer  =  new  BinaryWriter(s);
                foreach  (Employee  e  in  employees)
                {
                        writer.Write(e.FirstName);
                        writer.Write(e.LastName);
                        writer.Write(e.Extension);
                        writer.Write(e.SocialSecurityNumber);
                        writer.Write(e.Salaried);
                        Console.WriteLine("Wrote:  {0}",  e.ToString());
                }
        }

        public  static  void  Main()
        {
                Stream  s  =  new  MemoryStream();
                IEnumerable<Employee>  employees  =  CreateEmployees();

                SerializeEmployees(s,  employees);

                s.Seek(0,  SeekOrigin.Begin);
                DeserializeEmployees(s);

                s.Seek(0,  SeekOrigin.Begin);
                int  read;
                while  ((read  =  s.ReadByte())  !=  -1)
                        Console.Write("{0:X}  ",  read);

        }
}
    
   
  
   



Output

Wrote: D, J; 3; 001-21-2232; True
Wrote: B, G; 5; 001-21-0002; True
Wrote: R, J; 9; 322-21-4321; False
Wrote: B, B; 3; 331-22-1211; True
Wrote: S, H; 9; 991-28-2777; False
Read: D, J; 3; 001-21-2232; True
Read: B, G; 5; 001-21-0002; True
Read: R, J; 9; 322-21-4321; False
Read: B, B; 3; 331-22-1211; True
Read: S, H; 9; 991-28-2777; False
1 4A 1 44 3 0 0 0 B 30 30 31 2D 32 31 2D 32 32 33 32 1 1 47 1 42 5 0 0 0 B 30 30 31 2D 32 31 2D 30 3
0 30 32 1 1 4A 1 52 9 0 0 0 B 33 32 32 2D 32 31 2D 34 33 32 31 0 1 42 1 42 3 0 0 0 B 33 33 31 2D 32
32 2D 31 32 31 31 1 1 48 1 53 9 0 0 0 B 39 39 31 2D 32 38 2D 32 37 37 37 0


HTML code for linking to this page:

Follow Navioo On Twitter

C# Examples

 Navioo Class
» Class Serialization