Wednesday, April 17, 2013

C# Serialization and Deserialization


As we know you make an object serializable by either implementing the ISerializable interface or by placing the [Serializable] at the top of the class.


1. Students Class


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SysDiagnosis
{
    public class Student
    {
        public string Name { get; set; }
        public string ID { get; set; }
        public int Age { get; set; }
        public string Gender { get; set; }
        public double Grade { get; set;}        
    }
}





2. SerilizeHelper Class



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using System.IO;

namespace SysDiagnosis
{
    public  class SerializeHelper
    {
        public static void SerializeMe(object obj, string strPath)
        {
            XmlSerializer serilizser = new XmlSerializer(obj.GetType());
            StreamWriter writter = new StreamWriter(strPath);
            serilizser.Serialize(writter.BaseStream,obj);
        }
    }
}


3. Main Program


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;

namespace SysDiagnosis
{
    class Program
    {
        static void Main(string[] args)
        {
            Student student = new Student();
            student.Name = "Vinodh";
            student.ID = "EE01";
            student.Age = 27;
            student.Gender = "Male";
            student.Grade = 7.50;
            Console.WriteLine("Serializing object to XML");
            SerializeHelper.SerializeMe(student,@"C:\students.xml");
            Console.ReadLine();                          
        }
    }
}


4.Ouput File : (c:\students.xml)


<?xml version="1.0"?>
<Student xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>Vinodh</Name>
  <ID>EE01</ID>
  <Age>27</Age>
  <Gender>Male</Gender>
  <Grade>7.5</Grade>
</Student>




 class Program
    {
        static void Main(string[] args)
        {
            Student student = new Student();
            student.Name = "Vinodh";
            student.ID = "EE01";
            student.Age = 27;
            student.Gender = "Male";
            student.Grade = 7.50;
            Console.WriteLine("Serializing Object to XML");
            SerializeHelper.SerializeMe(student, @"C:\students.xml");
            Console.WriteLine("Serializing XML to Object");
            SerializeHelper.SerializeMe(@"C:\students.xml", new Student());
       }
 }






namespace SysDiagnosis
{
    public  class SerializeHelper
    {
        public static void SerializeMe(object obj, string strPath)
        {
            XmlSerializer serilizser = new XmlSerializer(obj.GetType());
            StreamWriter writter = new StreamWriter(strPath);
            serilizser.Serialize(writter.BaseStream,obj);
            writter.Close();
        }

        public static void SerializeMe(string strPath, Student obj)
        {
            XmlSerializer serilizer = new XmlSerializer(obj.GetType());
            StreamReader reader = new StreamReader(strPath);
            object deserialize = serilizer.Deserialize(reader.BaseStream);
            obj = deserialize as Student;

            Console.WriteLine(obj.Name);
            Console.WriteLine(obj.ID);
            Console.WriteLine(obj.Age);
            Console.WriteLine(obj.Gender);                  
            Console.WriteLine(obj.Grade);


        }
    }
}


Serializatiion :

https://www.codeproject.com/Articles/1789/Object-Serialization-using-C
http://www.c-sharpcorner.com/uploadfile/yougerthen/how-to-serialize-an-object-using-an-iserializable-interface/