RoutedEventArgs.InvokeEventHandler(Delegate, Object) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在衍生類別中覆寫時,提供以特定類型方式叫用事件處理常式的方式,這可透過基底實作來提高效率。
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
,則會引發例外狀況。