C# の基本クラスから継承されたイベントの発生
C# では、イベントを容易にするために基本クラスからイベントを継承するのが一般的です。派生クラスでの処理。ただし、このような継承されたイベントを発生させるには、コンパイラ エラーを回避するための特定のアプローチが必要です。
基本クラスが次のイベントを定義するシナリオを考えてみましょう。
public class BaseClass { public event EventHandler Loading; public event EventHandler Finished; }
派生クラスで発生させようとすると、
this.Loading(this, new EventHandler());
を使用した Loading イベントの結果は、 error:
The event 'BaseClass.Loading' can only appear on the left hand side of += or -= (BaseClass')
このエラーは、他のクラス メンバーとは異なり、派生クラスによってイベントを直接呼び出すことができないために発生します。代わりに、継承されたイベントは、基本クラスで定義された特定のメソッドを呼び出して発生させる必要があります。これを実現するには、次の手順が必要です。
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); } }
このアプローチに従うことで、継承されたイベントを C# の派生クラスで安全かつ効率的に発生させることができます。
以上がC# 派生クラスで継承されたイベントを適切に発生させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。