آموزش serialize کردن اشیا
بسم الله الرحمن الرحیم
ممکن است شما بخواهید یک شی از کلاس را در یک XML فایل ذخیره کنید، برای این کار می بایست شی خود را serialize کنید.
در این آموزش نحوه serialize را بررسی خواهیم کرد.
یک پروژه جدید از نوع windows Applicatio
بسم الله الرحمن الرحیم
ممکن است شما بخواهید یک شی از کلاس را در یک XML فایل ذخیره کنید، برای این کار می بایست شی خود را serialize کنید.
در این آموزش نحوه serialize را بررسی خواهیم کرد.
یک پروژه جدید از نوع windows Application ایجاد کنید.
یک کلاس با نام MyClass به پروژه اضافه کنید و کد آن را به صورت زیر تغییر دهید:
public class MyClass
{
// old school property
private int _Age;
public int Age
{
get { return _Age; }
set { _Age = value; }
}
// new school property
public bool Citizen { get; set; }
// there's nothing wrong with using fields
public string Name;
}
حال دو متد برای serialize و deserialize کردن کلاس خود به صورت زیر اضافه می کنیم:
/// ---- SerializeAnObject -----------------------------
/// <summary>
/// Serializes an object to an XML string
/// </summary>
/// <param name="AnObject">The Object to serialize</param>
/// <returns>XML string</returns>
public static string SerializeAnObject(object AnObject)
{
XmlSerializer Xml_Serializer = new XmlSerializer(AnObject.GetType());
StringWriter Writer = new StringWriter();
Xml_Serializer.Serialize(Writer, AnObject);
return Writer.ToString();
}
/// ---- DeSerializeAnObject ------------------------------
/// <summary>
/// DeSerialize an object
/// </summary>
/// <param name="XmlOfAnObject">The XML string</param>
/// <param name="ObjectType">The type of object</param>
/// <returns>A deserialized object...must be cast to correct type</returns>
public static Object DeSerializeAnObject(string XmlOfAnObject, Type ObjectType)
{
StringReader StrReader = new StringReader(XmlOfAnObject);
XmlSerializer Xml_Serializer = new XmlSerializer(ObjectType);
XmlTextReader XmlReader = new XmlTextReader(StrReader);
try
{
Object AnObject = Xml_Serializer.Deserialize(XmlReader);
return AnObject;
}
finally
{
XmlReader.Close();
StrReader.Close();
}
}
حال بر روی فرم برنامه یک Butotn اضافه کنید و کد زیر را در آن قرار دهید
protected void Button1_Click(object sender, EventArgs e)
{
// create and initialize an object
MyClass Test = new MyClass();
Test.Age = 18;
Test.Name = "Rocky Balboa";
Test.Citizen = true;
// Serialize it
String XML;
XML = MiscUtilities.SerializeAnObject(Test);
// Deserialize it
MyClass Test2;
Test2 = MiscUtilities.DeSerializeAnObject(XML, typeof(MyClass)) as MyClass;
// TODO: Get a cup of coffee and bask in the glory of rock solid code.
}
پس از اجرای برنامه نتیجه serilize شدن کلاس به صورت زیر خواهد بود:
<?xml version="1.0"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>Rocky Balboa</Name>
<Age>18</Age>
<Citizen>true</Citizen>
</MyClass>