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

احتاج إلى شرح CLR Reflection

بدأه osmannassar في 1 سبتمبر 2010 · 6 رد · 1,287 مشاهدة · في قسم تكنولوجيا Microsoft .NET العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته أحتاج إلى شرح أو مقال أو موضوع عن تقنية CLR Reflection أرجو المساعدة من المحترفين بإعطائي شرح وافي عن هذه التقنية لأني وجدتها في مشروع من المشاريع التي أقوم بتحليلها وأحتاج إلى شرح لهذا الموضوع من فضلكم ولكم مني جزيل الشكر أرجو الرد بأسرع موقت ولكم مني جزيل الشكر

#2
أرجو توضيح هذا الكود من فضلكم 


static private ArticlesProvider _instance = null;
static public ArticlesProvider Instance
{
get
{
if (_instance == null)
_instance = (ArticlesProvider)Activator.CreateInstance(
Type.GetType(Globals.Settings.Articles.ProviderType));
return _instance;
}
}
}
}

وهذا الكود متعلق بتقنية CLR Reflection أرجو من المبرمجين المحترفين إذا كان هناك مقالة أو موضوع أو أي شيء يشرح هذه التقنية أرجو أن لا تبخلو عليه بيها ولكم مني جزيل الشكر والامتنان

تم تعديل هذه المشاركة بواسطة osmannassar في 1 سبتمبر 2010 في 15:12

#3
osmannassar كتب:

أرجو توضيح هذا الكود من فضلكم 


static private ArticlesProvider _instance = null;
static public ArticlesProvider Instance
{
get
{
if (_instance == null)
_instance = (ArticlesProvider)Activator.CreateInstance(
Type.GetType(Globals.Settings.Articles.ProviderType));
return _instance;
}
}
}
}

وهذا الكود متعلق بتقنية CLR Reflection أرجو من المبرمجين المحترفين إذا كان هناك مقالة أو موضوع أو أي شيء يشرح هذه التقنية أرجو أن لا تبخلو عليه بيها ولكم مني جزيل الشكر والامتنان

أخي الكريم , هذا الكود يقوم بإنشاء Object في الـ Runtime من نمط يحدد إسمه لاحقا , يحدد إسم هذا النمط (Class) عن طريق String مخزن في الـ Setting التي تحوي Field إسمه Provider Type ربما يحوي هذا الـ Field إسم الصنف ArticleProvider نفسه أو أحد مشتقاته (وعلى الأغلب أحد مشتقاته , لأنه من غير المنطقي أن نهدر وقتنا بمثل هالكود طالما لا يوجد إلا صنف واحد فقط معروف مسبقا لا يمكن أن يتغير )...

يفيد هذا الحل بتوفير خيار للمبرمج بتغيير الـ Article Provider عن طريق فقط تغيير إسمه كـ String في الـ Setting فقط ...

يفيد الـ Activator في إنشاء Object من صنف يعطى نوعة أو نمطه لاحقا ... و في هذا المثال : قام الـ Activator في التعرف على الصنف المراد إنشاء Object منه عن طريق الصنف Type الذي بدوره قام بحل (resolving ) إسم الصنف المراد إنشاء Object منه عن طريق الـ String المخزن في الـ Setting ...

أرجو أن لا أكون قد زدت الأمور تعقيدا

تم تعديل هذه المشاركة بواسطة AliBazzi في 1 سبتمبر 2010 في 18:37

#4

شكراً للسيد AliBazzi وأرجو لك دوام الصحة والعافية ولكم أرجو ذكر كتاب أو مقالة تقوم بشرح الموضوع بالتفصيل علماً بأني اجهل هذه الجزئية وأحتاج إلى كتاب أو مقالة تشرح الموضوع بشكل سلسل وسهل للفهم أي ذكر الموضوع من البداية وجميع متعلقاته ولك مني جزيل الشكر والامتنان والعرفان بالجميل

#5
osmannassar كتب:

شكراً للسيد AliBazzi وأرجو لك دوام الصحة والعافية ولكم أرجو ذكر كتاب أو مقالة تقوم بشرح الموضوع بالتفصيل علماً بأني اجهل هذه الجزئية وأحتاج إلى كتاب أو مقالة تشرح الموضوع بشكل سلسل وسهل للفهم أي ذكر الموضوع من البداية وجميع متعلقاته ولك مني جزيل الشكر والامتنان والعرفان بالجميل

أعرف كتابين يحتويان فصول ممتازة تغطي هذا الموضوع بالتحديد , مع إنني قد تعملته صراحة بالرجوع إلى MSDN Library ... المهم :

Pro C# 2010 and the .NET 4 Platform

http://www.apress.co...view/1430225491

C# 4.0 in a Nutshell

http://oreilly.com/c...g/9780596800956

وملاحظة فقط : هذا الموضوع من المواضيع التي توسع أفقك و فهمك للـ .net framework و لبنيته ...

أهلا وسهلا

تم تعديل هذه المشاركة بواسطة AliBazzi في 2 سبتمبر 2010 في 16:09

#6

اسماء الحقول و الفئات و الخصائص و الثوابت و الاحداث و الدوال و الـ Delegations (و غيرهم من الأسماء التى تكتب داخل الكود) تسمى بالـ metadata و يتم حفظها مع الملف التنفيذى.

الـ Reflection هى وسيلة تتيح لك الوصول لأى من هذه الأسماء لتفعل بها ما تشاء فمثلا إذا كانت توجد لديك فئه private و تريد انشاء نسخه منها تستطيع بإستخدام اسم الفئه و مسارها ان تقوم بإنشاء نسخه منها (كما حدث فى مثالك بالأعلى).

أحد أهم إستخدمات الـ Reflection هى فى بناء Infrastructure للـ Plug-ins للبرامج.

أى كتاب يتحدث عن الـ CLS او CLR ستجد بالتأكيد فصل فيه يتحدث عن الـ Reflections و بعد ان تقرأ أى منهم ارشح لك بقوه فتح الـ Object Browser و تصفح مجال الأسماء System.Reflection بنفسك و قراءة اسماء الفئات و وصفها فهذه ستساعدك كثيرا أكثر من أى كتاب (إذا كنت ستنفذ هذه الفكره لا تنسى جعل تحديد الخيار View Namespaces داخل الـ Objec Browser).

و الله ولي التوفيق

تم تعديل هذه المشاركة بواسطة محمد علاء الدين في 2 سبتمبر 2010 في 03:33

مدونتي: C++ Tips and Tricks

#7

شكر خاص من القلب للأخ AliBazzi والأخ محمد علاء الدين على مجهودهم في محاولة شرح الموضوع بشكل واضح وسلس ولكم مني كل التحية والتقدير وأرجو من الله أن يساعدكم كما تساعدونني في إيجاد ما تعثر علي من المعلومات ولكم مني جزيل الشكر والامتنان والعرفان بالجميل

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