ホームページ >バックエンド開発 >C++ >C# で継承されたイベントを適切に発生させるにはどうすればよいですか?

C# で継承されたイベントを適切に発生させるにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-26 12:07:10927ブラウズ

How to Properly Raise Inherited Events in C#?

C# で継承されたイベントを発生させる方法

C# では、イベントを基本クラスで宣言し、派生クラスからアクセスできます。ただし、継承されたクラスでイベントを発生させるには、特別な処理が必要です。

問題:

基本クラスから継承されたイベントを発生させようとすると、次のようなエラーが発生する場合があります。イベントは = または -= の左側にのみ表示されます。演算子。

解決策:

継承されたイベントを発生させるには、イベントの呼び出しに使用できる保護されたメソッドを基本クラスに作成する必要があります。これらのメソッドは、命名規則「OnEventName」に従う必要があります。

たとえば、次の基本クラスを考えてみましょう:

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);
    }
}

派生クラスでのイベントの発生:

派生クラスで、保護されたメソッドを呼び出して、 events:

public class DerivedClass : BaseClass
{
    public void DoSomething()
    {
        ...
        OnLoading(EventArgs.Empty);
        ...
        OnFinished(EventArgs.Empty);
    }
}

注:

  • 保護されたメソッドは、イベント ハンドラーを呼び出す必要があるかどうかを確認するように変更できます (たとえば、ハンドラーをチェックすることによって) .GetInvocationList().Length > 0).
  • このアプローチにより、イベントは継承階層全体で一貫した方法で生成および処理されます。

以上がC# で継承されたイベントを適切に発生させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。