RoutedEventArgs.InvokeEventHandler(Delegate, Object) 方法

定義

在衍生類別中覆寫時,提供以特定類型方式叫用事件處理常式的方式,這可透過基底實作來提高效率。

C#
protected virtual void InvokeEventHandler(Delegate genericHandler, object genericTarget);

參數

genericHandler
Delegate

要叫用的泛型處理常式/委派實作。

genericTarget
Object

應該在其上叫用所提供處理常式的目標。

範例

以下是虛擬程式碼,說明可用於實作的基本模式。 MyRoutedEventHandler以下是 的 RoutedEventHandler 子類別。

C#
public class MyRoutedEventArgs : RoutedEventArgs 
{
// other members omitted
    protected override void InvokeEventHandler(Delegate genericHandler, object genericTarget) {
        MyRoutedEventHandler handler = (MyRoutedEventHandler) genericHandler;
        handler(genericTarget, this);
    }
}

備註

基底實作會納入反映,以判斷處理常式不是常 RoutedEventHandler 值的任何情況的正確處理常式,而這個反映步驟確實會產生一些效能後果。 藉由不依賴反映,可以更有效率地叫用。 這是促使此方法可供任何路由事件引數類別選擇覆寫的案例。 實作不應該呼叫這個方法的基底,因為您的實作應該已經負責叫用型別安全處理常式。

給繼承者的注意事項

這個方法旨在由衍生的事件資料類別覆寫,以提供更有效率的委派調用。 實作應該將 提供的 genericHandler 轉換為型別特定委派,然後叫用該處理常式。

預設實作會嘗試叫用提供的處理常式,並嘗試將它 RoutedEventHandler 轉換成 。 genericHandler如果 或 genericTarget 提供為 null ,則會引發例外狀況。

適用於

產品 版本
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10