Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menaikkan Peristiwa Diwarisi dengan Betul dalam C#?

Bagaimanakah Saya Boleh Menaikkan Peristiwa Diwarisi dengan Betul dalam C#?

DDD
Lepaskan: 2024-12-25 20:02:15
asal
777 orang telah melayarinya

How Can I Properly Raise Inherited Events in C#?

Meningkatkan Peristiwa Warisan dalam C#

Apabila bekerja dengan warisan dalam C#, adalah penting untuk memahami cara mengakses dan meningkatkan acara yang diisytiharkan dengan betul dalam kelas asas.

Andaikan anda mempunyai kelas asas dengan acara berikut ditakrifkan:

public event EventHandler Loading;
public event EventHandler Finished;
Salin selepas log masuk

Dalam kelas yang mewarisi daripada kelas asas ini, anda mungkin menghadapi ralat semasa cuba menaikkan acara ini secara langsung, seperti:

this.Loading(this, new EventHandler()); // Error: The event 'BaseClass.Loading' can only appear on the left hand side of += or -= 
Salin selepas log masuk

Ralat ini berlaku kerana acara tidak boleh diakses seperti ahli yang diwarisi biasa. Untuk menaikkan acara daripada kelas yang diwarisi, pendekatan berikut harus digunakan:

  1. Dalam kelas asas, cipta kaedah dilindungi yang boleh digunakan untuk menaikkan acara. Kaedah ini harus dinamakan menggunakan awalan "Hidup" diikuti dengan nama acara:
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);
    }
}
Salin selepas log masuk
  1. Dalam kelas yang mewarisi daripada kelas asas ini, kaedah OnLoading dan OnFinished boleh dipanggil ke raise the events:
public class InheritedClass : BaseClass
{
    public void DoSomeStuff()
    {
        ...
        OnLoading(EventArgs.Empty);
        ...
        OnFinished(EventArgs.Empty);
    }
}
Salin selepas log masuk

Dengan menggunakan kaedah yang dilindungi untuk menaikkan acara dalam kelas asas, anda boleh memastikan bahawa pengendali acara digunakan dengan betul daripada kelas terbitan sambil mengekalkan pengkapsulan mekanisme penjanaan acara.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menaikkan Peristiwa Diwarisi dengan Betul dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan