آموزش serialize کردن اشیا

آموزش 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>

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس