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 ,則會引發例外狀況。

適用於