"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تشغيل الأحداث الموروثة بشكل صحيح في الفصول المشتقة في C#

كيفية تشغيل الأحداث الموروثة بشكل صحيح في الفصول المشتقة في C#

نشر في 2025-04-14
تصفح:159

How Can I Properly Raise Inherited Events in C# Derived Classes?

رفع الأحداث الموروثة من فئة أساسية في C#

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

في فئة مشتقة ، محاولة رفع حدث التحميل باستخدام:

public class BaseClass
{
    public event EventHandler Loading;
    public event EventHandler Finished;
}

يحدث هذا الخطأ لأن الأحداث ، على عكس أعضاء الفئة الآخرين ، لا يمكن الاحتجاج بها مباشرة بواسطة الفئة المشتقة. بدلاً من ذلك ، يجب رفع الأحداث الموروثة عن طريق استدعاء طرق محددة محددة في الفئة الأساسية. ولتحقيق ذلك ، تكون الخطوات التالية ضرورية:

this.Loading(this, new EventHandler());

الطبقة العامة الأساسية { تحميل الحدث العام تحميل ؛ انتهى الحدث العام. onloading void الافتراضية المحمية (EventArgs E) { EventHandler Handler = التحميل ؛ إذا (معالج! = فارغ) { معالج (هذا ، ه) ؛ } } محمية Void Void onfinished (EventArgs E) { EventHandler Handler = الانتهاء ؛ إذا (معالج! = فارغ) { معالج (هذا ، ه) ؛ } } }
The event 'BaseClass.Loading' can only appear on the left hand side of  = or -= (BaseClass')

استدعاء أساليب تفعيل الأحداث في الفئات المشتقة:
  1. في الفصول المشتقة ، بدلاً من التذرع مباشرة بالأحداث ، استدعاء طرق تربية الأحداث المقابلة المحددة في الفئة الأساسية. على سبيل المثال: { الفراغ العام dosomething () { // رفع حدث التحميل onloading (eventArgs.Empty) ؛ // رفع الحدث النهائي onfinished (eventArgs.Empty) ؛ } }
  2. باتباع هذا النهج ، يمكن رفع الأحداث الموروثة بأمان وكفاءة في فئات مشتقة في C#.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3