بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
في هذا الدرس سوف نقوم باستكمال الجزء الثاني للدرس الاول
.............................................................................................................................................
في هذا الدرس سوف نقوم بشرح الاتي:-
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
إن شاء الله يكون الدرس مفيد واعجبكم
وان اخطأت فمن الشيطان
وبارك الله فيكم
:) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :)
