Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menaikkan Peristiwa Diwarisi dengan betul dalam Kelas Terhasil C#?
Menaikkan Peristiwa yang Diwarisi daripada Kelas Asas dalam C#
Dalam C#, adalah amalan biasa untuk mewarisi acara daripada kelas asas untuk memudahkan acara pengendalian dalam kelas terbitan. Walau bagaimanapun, menaikkan peristiwa yang diwarisi sedemikian memerlukan pendekatan khusus untuk mengelakkan ralat pengkompil.
Pertimbangkan senario di mana kelas asas mentakrifkan peristiwa berikut:
public class BaseClass { public event EventHandler Loading; public event EventHandler Finished; }
Dalam kelas terbitan, cuba meningkatkan acara Memuatkan menggunakan:
this.Loading(this, new EventHandler());
menghasilkan dalam ralat:
The event 'BaseClass.Loading' can only appear on the left hand side of += or -= (BaseClass')
Ralat ini berlaku kerana peristiwa, tidak seperti ahli kelas lain, tidak boleh dipanggil secara langsung oleh kelas terbitan. Sebaliknya, peristiwa yang diwarisi mesti dibangkitkan dengan menggunakan kaedah khusus yang ditakrifkan dalam kelas asas. Untuk mencapai matlamat ini, langkah-langkah berikut adalah perlu:
public class BaseClass { public event EventHandler Loading; public event EventHandler Finished; 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); } } }
public class DerivedClass : BaseClass { public void DoSomething() { // Raise Loading event OnLoading(EventArgs.Empty); // Raise Finished event OnFinished(EventArgs.Empty); } }
Dengan mengikuti pendekatan ini, peristiwa yang diwarisi boleh dibangkitkan dengan selamat dan cekap dalam kelas terbitan dalam C#.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menaikkan Peristiwa Diwarisi dengan betul dalam Kelas Terhasil C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!