0Pricing
C# Academy · درس

فهم Reflection في C#

استخدم Reflection لفحص الكائنات ومعالجتها في وقت التشغيل

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

مقدمة إلى الانعكاس

فهم الانعكاس في C#

مرحبًا بكم في الدرس التالي! في هذا الدرس، ستتعلمون عن الانعكاس في C#، وهي ميزة قوية تتيح لكم فحص الأنواع والكائنات والتفاعل معها أثناء التشغيل. فلنبدأ!

فهم Reflection في C# — رسم توضيحي 1

ما المقصود بالانعكاس؟

ما المقصود بالانعكاس؟

الانعكاس هو قدرة البرنامج على فحص بنيته ومعالجتها أثناء التشغيل. ويُستخدم عادةً في:

  • الوصول إلى البيانات الوصفية حول الأنواع والأساليب والخصائص.
  • استدعاء الأساليب والوصول إلى الحقول ديناميكيًا.
  • بناء أطر العمل والأدوات، مثل أدوات التسلسل و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# — رسم توضيحي 10

الأسئلة الشائعة

هل درس «فهم 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الأنواع العامة في C#
  2. Async وAwait: العمل مع التعليمات البرمجية غير المتزامنة
  3. فهم مؤشرات الترابط والمهام
  4. استكشاف المفوضات وLambdas
  5. فهم Reflection في C#
← العودة إلى C# Academy