|
بسم الله الرحمن الرحيم
راينا في الجزء الأول ان لدينا من بين الامكانيات الجديدة التعريف دون تحديد نوع المتغيرات(Implied Types) و ايضا ال Anonymous Types و لكن رغم ذلك هذه الأمور لا تشرح لنا بشكل دقيق كيفية و امكانية كتابة هذا الكود :
Dim mesPersonnes = Select New{.Nom = Personne.Nom, .Age = Personne.Age }_
From Personne In Personnes_
Where(Personne.Age < 40)
من أجل فهم جيد للكود اعلاه يجب ان نعرف ما يسمى بال Extensions Methods و هو ما سنتكلم عليه في الفقرة الموالية .
Extension Method
هذا النوع من ال Methods هو عبارة عن Shared Methods عندما تنشأها في كلاس معين مثلا تدخل نفسها كخاصية في جميع الكائنات الموجودة في الكلاس باستثناء تلك الموجودة فيها أصلا. كيف ذلك ؟ طبعا سوف نرى عن طريق مثال بسيط ماذا نعني بهذا الأمر لكن قبل ذلك اود أن أشير الى معلومة بسيطة هي أن تعابير الكود أعلاه مثل Select و From و Where هي عبارة عن Extensions Methods .
الآن دعونا نشرح جيدا معنى ال Extensions Methods و ذلك عن طريق مثال تطبيقي :
سوف نقوم الآن بانشاء Extension method قد لا تكون مفيدة بشكل كبير لكنها تنفع لأن تكون مثال لتقريب الصورة و توضيحها أكثر، ال Extension Method التي نريد إنشاءها الآن تقوم بأمر بسيط ألا و هو كتابة محتوي متغير من نوع IEnumerable في شاشة الدوس .
أولا لنرى معا هذا الكود البسيط :
قمنا في البدأ باعلان جدول String و طبعا أعطيناه قيم محددة
Dim Personnes = {_
New Personne{.Name = "Jessy", .Prenom = "Richard", .Age=20}_
New Personne{.Name = "Clark", .Prenom = "Sabine", .Age=21}_
New Personne{.Name = "Crazy", .Prenom = "Man", .Age=21}_
}
ثم بعد ذلك كما ترى هذا الكود عبارة عن LINQ Query و لاحظ معي أننا لم نحدد نوع المتغير
Dim OurResults = Select Personne From Personne In Personnes_
Where Personne.Age = 21
اذا عملنا Query على المتغير Personnes و أخذنا الأشخاص ذوو السن 21 اذا اذا ما أردنا ان نكتب النتائج مثلا على شاشة الدوس(Console Application) ما علينا فعله جد سهل حيث أن الكود سيكون كالتالي :
For Each Personne In OurResults
Console.WriteLine(Personne.Name)
Next
و النتيجة ستكون على الشكل التالي :
Jessy
Crazy
الى هنا كل شئ واضح لكن دعونا كيف يمكننا ان نعلن Extension Method و قبل لماذا نريدها أصلا ؟؟؟
نحن نريد الآن عندما نرغب في كتابة تلك المعلومات على الشاشة ان نستدعي ال Method بواسطة المتغير نفسه أي أن ال Method الخاصة بكتابة النتائج على الشاشة ستصبح عنصرا من عناصر المتغير. دعوني أقرب الأمر و ليكن ذلك عن طريق تعريف ال Extension Method الخاصة بنا و سيكون اسمها مثلا Write :
Public Shared Sub Write(Of T)(ByVal [Me] As IEnumarable(Of T))
For Each Personne In T
Console.WriteLine(Personne.Name)
Next
End Sub
كما ترون لا يوجد فرق بين هذه ال Method و ال Methods العاديين سوى وجود Me و التي تعتبر مؤشر للكائن الذي يستدعي ال Method و T هنا تعبر عن ال Collection الممررة الى ال Extension Method و الكود الخاص بالحلقة التكرارية طبعا واضح.
الآن بعد أن أنشأنا Extension Method خاصة بنا ماذا يمكننا ان نفعل بها ؟؟ بكل بساطة يمكن بعد ان أنشأنها كتابة الكود التالي دون مشاكل :
OurResults.Write()
هكذا يمكننا ان نحصل على النتيجة بكل بساطة بل و يمكننا ان نفعل اكثر من ذلك كون ال Extension Method مشتركة (Shared) :
Write(OurResuts)
اذا الآن يمكن ان يتضح لنا كيف تشتغل اكواد ال LINQ يعني مثل ال Select و Where فمثلا لو أخذنا Where فستكون تقوم فقط باختبار شرط مثلا Name="Muslim" و ترجع نوع Boolean.
الى هنا و ينتهي المقال و اتمنى ان يكون قد أفادكم و لو قليلا
و السلام عليكم و رحمة الله و بركاته Add as favourites (43) | Quote this article on your site | Views: 3125 | E-mail
Only registered users can write comments. Please login or register. Powered by AkoComment Tweaked Special Edition v.1.4.6 AkoComment © Copyright 2004 by Arthur Konze - www.mamboportal.com All right reserved |