What is Serialization in C#.Net ?
Object Serialization is a process through which an object's state is transformedinto some serial data format, such as XML or binary format, in order to be stored
for some later use.
Use of Serialization
Passing an object from on application to another.
Passing an object from one domain to another.
Types of Serialization
1.Binary Serialization
2.SOAP Serialization
3.XML Serialization
XML Serialization:-
Required namespace for XML Serializationusing System.Xml;
using System.Xml.Serialization;
How Do We Achieve This
For serialization and deserialization, we need to use
System.Xml.Serialization, because we need to use XmlSerialization class
which is provided in System.Xml.Serialization.
To understand this, we assume one example of Author and Books. We have two classes.
One is Author and another is Books. Author has Author ID, Author Name and Array
of Books. While Books has Books ID, Books Name, Books Price and Books Quantity in Stock.
// Author Class .
public class Author
{
private int _AuthID;
private string _AuthName;
private Books[] _Books;
public int AuthorID
{
get{ return _AuthID;}
set{ _AuthID = value;}
}
public string AuthorName
{
get { return _AuthName; }
set { _AuthName = value; }
}
public Books[] Books
{
get {return _Books;}
set{ _Books = value;}
}
}
// Books Class .
public class Books
{
private int _BookID;
private string _BookName;
private int _BookPrice;
private int _BookQtyInStock;
public int BookID
{
get{ return _BookID; }
set{ _BookID = value;}
}
public string BookName
{
get{return _BookName;}
set{ _BookName = value;}
}
public int BookPrice
{
get{ return _BookPrice;}
set { _BookPrice = value; }
}
public int BookQtyInStock
{
get { return _BookQtyInStock; }
set{ _BookQtyInStock = value; }
}
First we will Understand Serialization
In our application, we have serialization function which is called by our click event orwhenever this is required. In serialization, we have created one object of Author class
and another is Books. Author holds one test Author “Phone” and then it creates an array
of Books class and stores to Author.Books.
private void Serialization()
{
Author Auth = new Author();
Auth.AuthorID = 1;
Auth.AuthorName = "Auhtor";
Books[] book = new Books[5];
for (int i = 0; i < 5; i++)
{
book[i] = new Books();
book[i].BookID = i;
book[i].BookPrice = i * 10;
book[i]._BookQtyInStock = i + 10;
book[i].BookName = " Book Name : " + i.ToString();
}
Auth.Books = book;
XmlSerializer ser = new XmlSerializer(Auth.GetType());
System.Text.StringBuilder sb = new System.Text.StringBuilder();
System.IO.StringWriter writer = new System.IO.StringWriter(sb);
ser.Serialize(writer, Auth);
// Here Classes are converted to XML String.
// This can be viewed in SB or writer.
// Above XML in SB can be loaded in XmlDocument object
XmlDocument doc = new XmlDocument();
doc.LoadXml(sb.ToString());
}
Now we will look at Deserialization
In our application, we have Deserialization function which is called by our click event or whenever this is required. In deserialization, we have created one object of Author
class.
protected void DeSerialize(string XmlString)
{
Author Auth = new Author();
XmlDocument doc = new XmlDocument();
doc.LoadXml (XmlString);
XmlNodeReader reader = new XmlNodeReader(doc.DocumentElement);
XmlSerializer ser = new XmlSerializer(Auth.GetType());
object obj = ser.Deserialize(reader);
// Then
you just need to cast obj into whatever type it is, e.g.:
Author myObj = (Author)obj;
}
In the above method, we are passing one XML string. This will be converted into a form of
object. Here XML string is loaded into XmlDocument object and then XmlNodeReader is
reading from it. Now XmlSerialize object is created and we let it know the type of
object by Auth.GetType(). Now Ser object knows that it has to convert XML into an object
of Author Type. Now ser.Deserialize(reader) takes XML from reader object and converts
into an Object. Later this object is cast into Author. If we add this object into watch
and view, we will find that it has created the class hierarchy.
In the above post I have explained only XML serialization, hope its very useful to you. Please your feedback and comments.
No comments:
Post a Comment