الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الدرس الثاني من تسلسل الكائنات

بدأه ayash في 9 يونيو 2011 · 4 رد · 570 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

في هذا الدرس سوف نقوم باستكمال الجزء الثاني للدرس الاول

الدرس الاول

.............................................................................................................................................

في هذا الدرس سوف نقوم بشرح الاتي:-

1-كيف اعمل serialization لobject من class انت عملته

2-استعمال الXmlSerializer معه

3-توضيح الفرق بين Xml Formatter و Binary Formatter

بالنسبة للbinary formatter تم استخدامه في الدرس السابق اما بالنسبة لهذا الدرس سوف نستخدم الxml formatter

............................................................................................................................................

لنبدأ

لكي نجعل الclass قابل للتسلسل عن طريق استخدام ال Serializable Attribute

التطبيق على ذلك

الجانب النظري

1-سوف نقوم ببناء CLASS و نقوم بخلق منه OBJECT

2-نضع فوق الكلاس الذي نريد ان نجعله قابل لعملية التسلسلAttribute Serializable

3-نقوم بالخطوات التي قمنا بها في الدرس الاول اختلاف بسيط فقط تغيير الbinarSerializey الى XmlSerializer

----------------------------------------------------------------------------------------------------------------------------------------------

الجزء العملي

هذا الكود بلغة الc#

كود الالserialization

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml.Serialization;

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            mSerialize();
        }

        public void mSerialize()
        {
            // هنا خلقنا كائن اسمه طالب ووضعنا الاسم والعمر
            human student = new human();
            student.name = "Ali";
            student.age = 10;
            FileStream stream = File.Open("object.xml", FileMode.OpenOrCreate);
            XmlSerializer Oserial = new XmlSerializer(typeof(human));
            Oserial.Serialize(stream, student);
            stream.Close();
        }



//هنا الكلاس الذي نريد  خلق منه كائن
//----------------------------------------------------------------------------------------------
//هذه تدل اني اريد ان اجعل هذا الكلاسس قابل للتسلسل
    [Serializable()]
    public class human
    {

        private string _Name;

        private int _Age;

        public string name
        {
            get
            {
                return _Name;
            }
            set
            {
                _Name = value;
            }
        }

        public int age
        {
            get
            {
                return _Age;
            }
            set
            {
                _Age = value;
            }
        }
    }
}

هنا العكس

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml.Serialization;

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            mDeserialize();
        }

        public void mDeserialize()
        {
            human student;
            FileStream stream = File.Open("object.xml", FileMode.OpenOrCreate);
            XmlSerializer Oserial = new XmlSerializer(typeof(human));
            student = ((human)(Oserial.Deserialize(stream)));
            stream.Close();
            MessageBox.Show(("name:-"
                            + (student.name.ToString() + (",  age:-" + student.age.ToString()))));
        }
    }

//هنا الكلاس الذي نريد  خلق منه كائن
//----------------------------------------------------------------------------------------------
//هذه تدل اني اريد ان اجعل هذا الكلاسس قابل للتسلسل
    [Serializable()]
    public class human
    {

        private string _Name;

        private int _Age;

        public string name
        {
            get
            {
                return _Name;
            }
            set
            {
                _Name = value;
            }
        }

        public int age
        {
            get
            {
                return _Age;
            }
            set
            {
                _Age = value;
            }
        }
    }
}

..............................................................................................................................................

الكود بلغة الvb.net

كود الserialization

Imports System.Xml.Serialization
Imports System.IO

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        mSerialize()
    End Sub

    'هذه المثود لعمل  التسلسل
    Public Sub mSerialize()
        'هنا خلقنا كائن اسمه طالب ووضعنا الاسم والعمر
        Dim student As New human()
        student.name = "Ali"
        student.age = 10
        Dim stream As FileStream = File.Open("object.xml", FileMode.OpenOrCreate)
        Dim Oserial As New XmlSerializer(GetType(human))
        Oserial.Serialize(stream, student)
        stream.Close()
    End Sub

End Class

'هنا الكلاس الذي نريد  خلق منه كائن
'----------------------------------------------------------------------------------------------
'هذه تدل اني اريد ان اجعل هذا الكلاسس قابل للتسلسل
<Serializable()> _
Public Class human
    Private _Name As String
    Private _Age As Integer


    Public Property name As String
        Get
            Return _Name
        End Get
        Set(ByVal value As String)
            _Name = value
        End Set
    End Property

    Public Property age As Integer
        Get
            Return _Age
        End Get
        Set(ByVal value As Integer)
            _Age = value
        End Set
    End Property

End Class

العكس

Imports System.Xml.Serialization
Imports System.IO

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        mDeserialize()
    End Sub



    Public Sub mDeserialize()
        Dim student As human
        Dim stream As FileStream = File.Open("object.xml", FileMode.OpenOrCreate)
        Dim Oserial As New XmlSerializer(GetType(human))
        student = CType(Oserial.Deserialize(stream), human)
        stream.Close()

        MessageBox.Show("name:-" + student.name.ToString() + ",  age:-" + student.age.ToString())

    End Sub

End Class

'هنا الكلاس الذي نريد  خلق منه كائن
'----------------------------------------------------------------------------------------------
'هذه تدل اني اريد ان اجعل هذا الكلاسس قابل للتسلسل
<Serializable()> _
Public Class human
    Private _Name As String
    Private _Age As Integer


    Public Property name As String
        Get
            Return _Name
        End Get
        Set(ByVal value As String)
            _Name = value
        End Set
    End Property

    Public Property age As Integer
        Get
            Return _Age
        End Get
        Set(ByVal value As Integer)
            _Age = value
        End Set
    End Property

End Class

---------------------------------------------------------------------------------------------------------------------------

تضيح الفرق بين Xml Formatter و Binary Formatter

حسب ما اوضح الاخوة في الدرس الاول اريد ان ارتبها في نقاط

binary

الصفات

الحجم-------اقل

الامان-------اكثر

السهولة في التعامل----اقل

حفظ اجزاء الكائن--------كل اجزاء الكائن

xml

الصفات

الحجم-------اكبر

الامان-------اقل

السهولة في التعامل----اكثر

حفظ اجزاء الكائن--------اجزاء الكائن من نوع public

إن شاء الله يكون الدرس مفيد واعجبكم

وان اخطأت فمن الشيطان

وبارك الله فيكم

:) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :)

تم تعديل هذه المشاركة بواسطة ayash في 9 يونيو 2011 في 13:14

1

291964_260506123967115_206850989332629_1001538_45132_n.jpg

اللهم إني أعوذ بك من علم لا ينفع ، ومن قلب لا يخشع ، ومن نفس لا تشبع ، ومن دعوة لا يستجاب لها

#2

مشكور اخي على المجهود الرائع وان شاء الله الى الامام

تم تعديل هذه المشاركة بواسطة akramKamal في 10 يونيو 2011 في 11:10

قولوا لا اله الا الله تفلحوا

ومن يبتغي غير الاسلام دينا فلن يقبل منه وهو في الاخرة من الخاسرين- صدق الله العظيم

#3

السلام عليكم ورحمه الله وبركاته

مشكور اخي على الطرح بس حبيت ان انوه ان هناك نوع اخر يسمى ال SOAP Formatter يستخدم مع خدمات الويب ..

.:: Wish to become better and better ::.

#4

مشكور على المعلومة اخ

VB Helper

291964_260506123967115_206850989332629_1001538_45132_n.jpg

اللهم إني أعوذ بك من علم لا ينفع ، ومن قلب لا يخشع ، ومن نفس لا تشبع ، ومن دعوة لا يستجاب لها

#5

السلام عليكم ورحمه الله وبركاته

لاشكر على واجب اخي .. بالتوفيق ..

.:: Wish to become better and better ::.

مواضيع مشابهة