RoutedEventArgs.InvokeEventHandler(Delegate, Object) メソッド

定義

派生クラスでオーバーライドされた場合、型固有の方法でイベント ハンドラーを呼び出す方法を提供します。これにより、基本実装よりも効率が向上する場合があります。

protected:
 virtual void InvokeEventHandler(Delegate ^ genericHandler, System::Object ^ genericTarget);
protected virtual void InvokeEventHandler (Delegate genericHandler, object genericTarget);
abstract member InvokeEventHandler : Delegate * obj -> unit
override this.InvokeEventHandler : Delegate * obj -> unit
Protected Overridable Sub InvokeEventHandler (genericHandler As Delegate, genericTarget As Object)

パラメーター

genericHandler
Delegate

呼び出すジェネリック ハンドラー/デリゲート実装。

genericTarget
Object

指定したハンドラーが呼び出されるターゲット。

次に示すのは、実装に使用できる基本的なパターンを示す擬似コードです。 ここで、 MyRoutedEventHandler はのサブクラスです RoutedEventHandler

public class MyRoutedEventArgs : RoutedEventArgs 
{
// other members omitted
    protected override void InvokeEventHandler(Delegate genericHandler, object genericTarget) {
        MyRoutedEventHandler handler = (MyRoutedEventHandler) genericHandler;
        handler(genericTarget, this);
    }
}
Public Class MyRoutedEventArgs
    Inherits RoutedEventArgs
' other members omitted
    Protected Overrides Sub InvokeEventHandler(ByVal genericHandler As System.Delegate, ByVal genericTarget As Object)
        Dim handler As MyRoutedEventHandler = CType(genericHandler, MyRoutedEventHandler)
        handler(genericTarget, Me)
    End Sub
End Class

注釈

基本実装には、そのハンドラーが文字どおりでない場合の適切なハンドラーを決定するリフレクションが組み込まれて RoutedEventHandler おり、このリフレクションステップにはパフォーマンスの問題があります。 呼び出しは、リフレクションに依存しないことで、より効率的に行うことができます。 これは、オーバーライドを選択する任意のルーティングイベント引数クラスでこのメソッドを使用できるようにためするシナリオです。 実装では、型セーフハンドラーを呼び出す必要があるため、このメソッドの基本を呼び出すことはできません。

注意 (継承者)

このメソッドは、派生イベントデータクラスによってオーバーライドされ、デリゲートのより効率的な呼び出しを提供するためのものです。 実装では、指定されたを genericHandler 型固有のデリゲートにキャストし、そのハンドラーを呼び出す必要があります。

既定の実装は、としてキャストしようとして、指定されたハンドラーを呼び出そうとし RoutedEventHandler ます。 genericHandlerまたはのいずれか genericTarget がとして指定されている場合 null 、例外が発生します。

適用対象