Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Meningkatkan Peristiwa Warisan dengan betul dalam C#?

Bagaimana untuk Meningkatkan Peristiwa Warisan dengan betul dalam C#?

Patricia Arquette
Patricia Arquetteasal
2024-12-26 12:07:10895semak imbas

How to Properly Raise Inherited Events in C#?

Cara Menaikkan Peristiwa Diwarisi dalam C#

Dalam C#, acara boleh diisytiharkan dalam kelas asas dan diakses oleh kelas terbitan. Walau bagaimanapun, menaikkan acara dalam kelas yang diwarisi memerlukan pengendalian khusus.

Masalah:

Apabila cuba menaikkan acara yang diwarisi daripada kelas asas, anda mungkin menghadapi ralat yang menyatakan bahawa acara hanya boleh muncul di sebelah kiri = atau -= operator.

Penyelesaian:

Untuk menimbulkan peristiwa yang diwarisi, anda mesti mencipta kaedah yang dilindungi dalam kelas asas yang boleh digunakan untuk memanggil peristiwa. Kaedah ini hendaklah mengikut konvensyen penamaan "OnEventName".

Sebagai contoh, pertimbangkan kelas asas berikut:

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

Kaedah Peningkatan Acara Terlindung:

Dalam kelas asas, cipta kaedah yang dilindungi seperti berikut:

protected virtual void OnLoading(EventArgs e)
{
    EventHandler handler = Loading;
    if (handler != null)
    {
        handler(this, e);
    }
}

protected virtual void OnFinished(EventArgs e)
{
    EventHandler handler = Finished;
    if (handler != null)
    {
        handler(this, e);
    }
}

Meningkatkan Acara dalam Kelas Terbitan:

Dalam kelas terbitan, panggil kaedah yang dilindungi untuk menaikkan acara:

public class DerivedClass : BaseClass
{
    public void DoSomething()
    {
        ...
        OnLoading(EventArgs.Empty);
        ...
        OnFinished(EventArgs.Empty);
    }
}

Nota:

  • Kaedah yang dilindungi boleh diubah suai untuk menyemak sama ada pengendali acara perlu digunakan (mis., dengan menyemak handler.GetInvocationList().Length > 0).
  • Pendekatan ini memastikan acara boleh dibangkitkan dan dikendalikan dengan cara yang konsisten sepanjang hierarki warisan.

Atas ialah kandungan terperinci Bagaimana untuk Meningkatkan Peristiwa Warisan dengan betul dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn