Suppose i have a class Article which i want to Serialize and Deserialize.In this class i hav three fields named public string sTitle, public string sAuthor, public string sText;
Here i will use two more namespaces--
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
For this first of all place attribute named [Serializable()] upon this class and inherite this class to ISerilizable
[Serializable()]
public class Articles : ISerializable
{
}
In this class there are two constructor one for default and other for Iserilizable interface.I will create two more methods one for Serilization and other for Deserialization---
So the Whole Code will be like this....
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace WindowsFormsApplication1
{
[Serializable()]
public class Articles : ISerializable
{
public string sTitle;
public string sAuthor;
public string sText;
public Articles()
{ }
public Articles(SerializationInfo info, StreamingContext context)
{
sTitle = Convert.ToString(info.GetValue("Title", typeof(String)));
sAuthor = Convert.ToString(info.GetValue("Author", typeof(String)));
sText = Convert.ToString(info.GetValue("Text", typeof(String)));
}
public void serialize(string fileName)
{
FileStream s;
s = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite);
BinaryFormatter B = new BinaryFormatter();
B.Serialize(s, this);
s.Close();
}
public Articles deSerialize(string fileName)
{
FileStream Fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
BinaryFormatter F = new BinaryFormatter();
Articles s1 = (Articles)F.Deserialize(Fs);
Fs.Close();
return s1;
}
#region ISerializable Members
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("Title", sTitle);
info.AddValue("Author", sAuthor);
info.AddValue("Text", sText);
}
#endregion
}
}
Now i am using button click event for using these methods...
private void button1_Click(object sender, EventArgs e)
{
Articles c1 = new Articles();
c1.sTitle = "My Title";
c1.sAuthor = "Author Name";
c1.sText = "This is my Text";
c1.serialize(@"C:\123.txt");
}
private void button2_Click(object sender, EventArgs e)
{
Articles c2 = new Articles();
Articles c3 = c2.deSerialize(@"C:\123.txt");
MessageBox.Show(c3.sTitle + c3.sAuthor + c3.sText);
}
Labels: Serialization and deserialization.....