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;
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 -=
Ralat ini berlaku kerana acara tidak boleh diakses seperti ahli yang diwarisi biasa. Untuk menaikkan acara daripada kelas yang diwarisi, pendekatan berikut harus digunakan:
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 InheritedClass : BaseClass { public void DoSomeStuff() { ... OnLoading(EventArgs.Empty); ... OnFinished(EventArgs.Empty); } }
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!