فهم Reflection في C#
استخدم Reflection لفحص الكائنات ومعالجتها في وقت التشغيل
فهم Reflection في C# درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 5 من أصل 5. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 5 دروس في المجموع.
مقدمة إلى الانعكاس
فهم الانعكاس في C#
مرحبًا بكم في الدرس التالي! في هذا الدرس، ستتعلمون عن الانعكاس في C#، وهي ميزة قوية تتيح لكم فحص الأنواع والكائنات والتفاعل معها أثناء التشغيل. فلنبدأ!

ما المقصود بالانعكاس؟
ما المقصود بالانعكاس؟
الانعكاس هو قدرة البرنامج على فحص بنيته ومعالجتها أثناء التشغيل. ويُستخدم عادةً في:
- الوصول إلى البيانات الوصفية حول الأنواع والأساليب والخصائص.
- استدعاء الأساليب والوصول إلى الحقول ديناميكيًا.
- بناء أطر العمل والأدوات، مثل أدوات التسلسل وORMs.
نقطة مهمة: يُعد الانعكاس جزءًا من مساحة الأسماء System.Reflection.
الوصول إلى معلومات النوع
الوصول إلى معلومات النوع
استخدموا الفئة Type للوصول إلى البيانات الوصفية حول نوع ما. مثال:
نصيحة: استخدموا GetProperties وGetMethods وGetFields لفحص أعضاء النوع.
using System;
class SampleClass {
public int Id { get; set; }
public string Name { get; set; }
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
Console.WriteLine("Type Name: " + type.Name);
Console.WriteLine("Properties:");
foreach (var prop in type.GetProperties()) {
Console.WriteLine("- " + prop.Name);
}
}
}
إنشاء الكائنات ديناميكيًا
إنشاء الكائنات ديناميكيًا
يمكنكم استخدام الانعكاس لإنشاء مثيلات لفئة ديناميكيًا. مثال:
نقطة مهمة: استخدموا Activator.CreateInstance لإنشاء الكائنات أثناء التشغيل.
using System;
class SampleClass {
public string Name { get; set; }
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
object instance = Activator.CreateInstance(type);
var property = type.GetProperty("Name");
property.SetValue(instance, "Reflection Example");
Console.WriteLine("Name: " + property.GetValue(instance));
}
}
استدعاء الأساليب ديناميكيًا
استدعاء الأساليب ديناميكيًا
يتيح الانعكاس استدعاء الأساليب أثناء التشغيل دون معرفة هذه الأساليب في وقت الترجمة. مثال:
نصيحة: استخدموا GetMethod وInvoke لإجراء استدعاءات ديناميكية للأساليب.
using System;
class SampleClass {
public void Greet(string name) {
Console.WriteLine("Hello, " + name);
}
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
object instance = Activator.CreateInstance(type);
var method = type.GetMethod("Greet");
method.Invoke(instance, new object[] { "World" });
}
}
التعامل مع السمات
التعامل مع السمات
يمكن استخدام الانعكاس لفحص السمات المخصصة المطبقة على الأنواع أو الأساليب أو الخصائص. مثال:
نقطة مهمة: استخدموا GetCustomAttributes لاسترداد معلومات السمات.
using System;
[AttributeUsage(AttributeTargets.Class)]
class SampleAttribute : Attribute {
public string Description { get; }
public SampleAttribute(string description) {
Description = description;
}
}
[Sample("This is a sample class.")]
class SampleClass {}
class Program {
static void Main() {
Type type = typeof(SampleClass);
var attributes = type.GetCustomAttributes(typeof(SampleAttribute), false);
foreach (SampleAttribute attr in attributes) {
Console.WriteLine("Description: " + attr.Description);
}
}
}
تحدي تطبيقي
تحدي تطبيقي
أنشئوا برنامجًا يستخدم الانعكاس لفحص فئة، وسرد أساليبها وخصائصها، واستدعاء أحد أساليبها ديناميكيًا. مثال:
using System;
class SampleClass {
public int Add(int a, int b) {
return a + b;
}
}
class Program {
static void Main() {
Type type = typeof(SampleClass);
Console.WriteLine("Methods:");
foreach (var method in type.GetMethods()) {
Console.WriteLine("- " + method.Name);
}
object instance = Activator.CreateInstance(type);
var addMethod = type.GetMethod("Add");
int result = (int)addMethod.Invoke(instance, new object[] { 5, 3 });
Console.WriteLine("Result of Add: " + result);
}
}
أفضل الممارسات لاستخدام الانعكاس
أفضل الممارسات لاستخدام الانعكاس
إليكم بعض أفضل الممارسات:
- استخدموا الانعكاس باعتدال، لأنه قد يؤثر في الأداء.
- خزّنوا نتائج الانعكاس مؤقتًا لتحسين الكفاءة عند تكرار الاستدعاءات.
- فضّلوا الحلول التي تُحسم في وقت الترجمة على الانعكاس كلما أمكن.
- استخدموا الانعكاس في السيناريوهات الديناميكية، مثل المكونات الإضافية وأطر العمل.
نصيحة: ادمجوا الانعكاس مع السمات المخصصة لإنشاء تطبيقات مرنة وديناميكية.
أحسنتم!
أحسنتم!
تهانينا! لقد تعلمتم كيفية استخدام الانعكاس لفحص الأنواع ومعالجتها أثناء التشغيل في C#. بهذا نختتم فئة "ميزات C# المتقدمة". فلنمضِ قدمًا نحو المزيد من مغامرات البرمجة!

الأسئلة الشائعة
هل درس «فهم Reflection في C#» مجاني؟
نعم — نص درس «فهم Reflection في C#» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 5 دروس في المجموع.
ماذا ستتعلم في «فهم Reflection في C#»؟
استخدم Reflection لفحص الكائنات ومعالجتها في وقت التشغيل تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 5 من أصل 5.
كم من الوقت يستغرق درس «فهم Reflection في C#»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الأنواع العامة في C#
- Async وAwait: العمل مع التعليمات البرمجية غير المتزامنة
- فهم مؤشرات الترابط والمهام
- استكشاف المفوضات وLambdas
- فهم Reflection في C#