كيفية استدعاء بناء الأساس بشكل صحيح في C#

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

المشكلة

تخيل أنك تقوم بإنشاء فئة استثناء مخصصة تتوارث من الفئة المدمجة Exception في C#. نيتك هي تمرير معلومات إضافية (مثل رسالة) إلى بناء الفئة Exception. ومع ذلك، يواجه العديد من المطورين تحديات عند محاولة القيام بذلك. على سبيل المثال، قد يبدو انattemptه كالتالي:

class MyExceptionClass : Exception
{
     public MyExceptionClass(string message, string extraInfo)
     {
         //هنا كل شيء يتعطل
         base(message);
     }
}

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

الحل

لكي تمرر المعلمات إلى بناء الفئة الأساسية في C# بشكل صحيح، تحتاج إلى استخدام صياغة معينة تسمح لك بذلك مباشرة في قائمة معلمات بنّاء الفئة المشتقة. إليك كيفية تصحيح تنفيذك الأصلي:

الصياغة الصحيحة

إليك النسخة المعدلة من فئتك:

public class MyExceptionClass : Exception
{
    public MyExceptionClass(string message, string extraInfo) : base(message)
    {
        //أشياء أخرى هنا
    }
}

شرح التغييرات الرئيسية

  1. استخدام قائمة تهيئة الباني: لاحظ أننا الآن نتضمن : base(message) مباشرة بعد معلمات الباني. وهذا يخبر C# باستدعاء باني الفئة الأساسية (Exception) وتمرير الحجة message له.

  2. فهم حدود استدعاء الباني: في C#، الباني ليس طريقة قياسية ولا يمكن استدعاؤه مثل طريقة عادية بعد بدء كتلة الباني. لهذا السبب، فإن الطريقة السابقة باستخدام base(message) داخل كتلة الطريقة لن تعمل.

  3. معلمات إضافية: إذا كنت ترغب في استخدام المعلمة الإضافية extraInfo، يمكنك توسيع الباني أكثر، من الممكن تخزينه للاستخدام لاحقًا داخل فئة الاستثناء المخصصة الخاصة بك.

مثال على استخدام كلا المعلمين

إذا قررت تضمين منطق إضافي لـ extraInfo، يمكن أن تبدو فئتك كالتالي:

public class MyExceptionClass : Exception
{
    public string ExtraInfo { get; private set; }

    public MyExceptionClass(string message, string extraInfo) : base(message)
    {
        ExtraInfo = extraInfo; // قم بتخزين المعلومات الإضافية للرجوع إليها لاحقًا
    }
}

الخاتمة

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

لمزيد من القراءة واستكشاف وراثة C# والبناة، اعتبار الغوص في الوثائق الرسمية لمايكروسوفت أو موارد برمجة أخرى.