C# Academy · درس

المفهوم وحالات الاستخدام؛ والمولّدات التزايدية (نظرة عامة)

تعرّف إلى وظيفة المولّدات وحالات استخدامها المعتادة وفكرة المولّدات التزايدية، وإلى محاكاة ملائمة لـ C# 6 باستخدام السمات والفئات الجزئية.

الدرس 1 من 28 خطوة

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

ما المُولِّد؟

الهدف: تعلّم ماهية مولدات الشيفرة المصدرية وسبب فائدتها.

  • تحلّل شيفرتك وتولّد ملفات C# جديدة
  • مفيدة جدًا للشيفرة النمطية المتكررة، مثل أدوات التحويل والإشعارات وDTOs
  • الفكرة التزايدية: الاستجابة للمدخلات التي تغيّرت فقط
  • سنحاكي ذلك هنا باستخدام السمات والفئات الجزئية (C# 6)

فكرة الفئة الجزئية

تتيح الفئات partial تقسيم نوع ما بين عدة ملفات؛ وعادةً ما تُصدر المولدات الجزء الجزئي الإضافي.

using System;

// Partial lets code live in multiple files; generators often emit a second part.
public partial class Person
{
  // "User" code (hand-written)
  public string FirstName;
  public string LastName;
}

// Imagine another file is generated with helpers.
public partial class Person
{
  // This region simulates "generated" members.
  public string FullName()
  {
    // simple boilerplate a generator could write
    return (FirstName ?? """") + " " + (LastName ?? """");
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Person p = new Person();
    p.FirstName = "Ada";
    p.LastName = "Lovelace";
    Console.WriteLine(p.FullName());
  }
}

علامات السمات

تفحص المولدات السمات لتقرر ما ستصدره. نحاكي هنا عملية الاكتشاف باستخدام الانعكاس، مع أنها تتم في وقت البناء في التطبيقات الفعلية.

using System;
using System.Reflection;

// Marker attribute a generator would search for
[AttributeUsage(AttributeTargets.Class)]
public sealed class AutoNotifyAttribute : Attribute { }

// A class we want to augment (emulating generator input)
[AutoNotify]
public class Settings
{
  public string Theme; // we wish to auto-generate a property wrapper
}

// In real generators, Roslyn would find [AutoNotify] and emit code.
// Here we only "discover" the attribute at runtime (emulation).

public class Program
{
  public static void Main(string[] args)
  {
    Type t = typeof(Settings);
    object[] at = t.GetCustomAttributes(typeof(AutoNotifyAttribute), false);
    Console.WriteLine(at.Length > 0 ? "Marker found" : "No marker");
  }
}

عرض توضيحي لقالب الشيفرة

سيقوم المولد بإصدار الشيفرة في ملف جديد. أما نحن فنطبع قالبًا بسيطًا لتوضيح الفكرة.

using System;
using System.Text;

// Tiny template that prints C# code a generator could add.
public static class Template
{
  public static string EmitAutoProperty(string className, string fieldName)
  {
    // Very small example; real generators would use syntax trees.
    StringBuilder sb = new StringBuilder();
    sb.AppendLine("public partial class " + className);
    sb.AppendLine("{");
    sb.AppendLine("  public string " + Upper(fieldName) + "");
    sb.AppendLine("  {");
    sb.AppendLine("    get { return this." + fieldName + "; }");
    sb.AppendLine("    set { this." + fieldName + " = value; /* notify here */ }");
    sb.AppendLine("  }");
    sb.AppendLine("}");
    return sb.ToString();
  }

  private static string Upper(string name)
  {
    if (string.IsNullOrEmpty(name)) return name;
    if (name.Length == 1) return name.ToUpperInvariant();
    return char.ToUpperInvariant(name[0]) + name.Substring(1);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    // Show what the "generated" code could look like
    string code = Template.EmitAutoProperty("Settings", "theme");
    Console.WriteLine(code);
  }
}

نظرة عامة على التوليد التزايدي

تقسّم المولدات التزايدية العمل إلى خطوات صغيرة.

  • تتتبّع المدخلات، مثل البنية النحوية والملفات الإضافية
  • تعيد الحساب فقط عند حدوث تغيير
  • عمليات بناء أسرع وتخصيصات أقل للذاكرة
  • نصيحة تصميمية: اجعل الخطوات نقية وحتمية

مجالات تميّزها

حالات الاستخدام:

  • الشيفرة النمطية: INotifyPropertyChanged وأدوات تحويل DTO
  • التحقق في وقت الترجمة: خرائط المسارات وربط الإعدادات
  • الأداء: تجنب الانعكاس في مسارات التنفيذ الحساسة للأداء
  • مزامنة التوثيق والشيفرة: المعرّفات والثوابت

تجنّبها في منطق وقت التشغيل المعقد؛ واجعل الإصدار صغيرًا ومتوقعًا.

دور المولّد

تحقق سريع: ماذا تفعل مولدات الشيفرة المصدرية لـ C# في وقت البناء؟

مراجعة

مراجعة: تفحص المولدات شيفرتك وتولّد المصدر. فكّر من خلال السمات + الأجزاء الجزئية، واجعل المخرجات صغيرة، وأعد حساب ما تغيّر فقط، وبصورة تزايدية.

البدء مجانًا

تعلم C# مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
93
الدروس
346

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

هل درس «المفهوم وحالات الاستخدام؛ والمولّدات التزايدية (نظرة عامة)» مجاني؟

نعم — نص درس «المفهوم وحالات الاستخدام؛ والمولّدات التزايدية (نظرة عامة)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 2 دروس في المجموع.

ماذا ستتعلم في «المفهوم وحالات الاستخدام؛ والمولّدات التزايدية (نظرة عامة)»؟

تعرّف إلى وظيفة المولّدات وحالات استخدامها المعتادة وفكرة المولّدات التزايدية، وإلى محاكاة ملائمة لـ C# 6 باستخدام السمات والفئات الجزئية. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟

لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 2.

كم من الوقت يستغرق درس «المفهوم وحالات الاستخدام؛ والمولّدات التزايدية (نظرة عامة)»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟

نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

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

  1. المفهوم وحالات الاستخدام؛ والمولّدات التزايدية (نظرة عامة)
  2. تجربة المطوّر والقيود
← العودة إلى C# Academy