Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menaikkan Peristiwa Diwarisi dengan betul dalam Kelas Terhasil C#?
Dalam pengaturcaraan berorientasikan objek, adalah perkara biasa bagi kelas untuk mewarisi peristiwa daripada kelas asasnya. Walau bagaimanapun, membangkitkan peristiwa yang diwarisi itu boleh menyebabkan kekeliruan. Soalan ini menangani ralat yang dihadapi semasa cuba menimbulkan peristiwa yang diwarisi dalam kelas terbitan dan menyediakan penyelesaian untuknya.
Dalam kelas asas yang ditakrifkan seperti berikut:
public class BaseClass { public event EventHandler Loading; public event EventHandler Finished; }
Kelas terbitan cuba meningkatkan yang diwarisi acara:
public class DerivedClass : BaseClass { // Error: 'BaseClass.Loading' can only appear on the left hand side of += or -= this.Loading(this, new EventHandler()); }
Ralat ini menunjukkan bahawa acara tidak boleh diakses terus menggunakan kata kunci "ini".
Untuk menaikkan acara yang diwarisi, anda perlu tentukan kaedah yang dilindungi dalam kelas asas untuk mengendalikan panggilan acara. Kaedah ini membenarkan acara dinaikkan walaupun kelas terbitan mengatasi acara tersebut.
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); } // Invoking the events from the derived class public class DerivedClass : BaseClass { public void RaiseLoadingEvent() { OnLoading(EventArgs.Empty); } public void RaiseFinishedEvent() { OnFinished(EventArgs.Empty); } } }
Dengan memanggil OnLoading atau OnFinished dalam kelas terbitan, pengendali yang melanggan acara dalam kelas asas akan digunakan , memastikan pengendalian acara yang betul dalam kelas terbitan.
Atas ialah kandungan terperinci Bagaimana untuk Menaikkan Peristiwa Diwarisi dengan betul dalam Kelas Terhasil C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!