RoutedEventArgs.InvokeEventHandler(Delegate, Object) Metod

Definition

När det åsidosättas i en härledd klass kan du anropa händelsehanterare på ett typspecifikt sätt, vilket kan öka effektiviteten jämfört med basimplementeringen.

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)

Parametrar

genericHandler
Delegate

Den generiska hanteraren/delegatimplementeringen som ska anropas.

genericTarget
Object

Målet som den angivna hanteraren ska anropas på.

Exempel

Följande är pseudokod som illustrerar ett grundläggande mönster som kan användas för implementering. MyRoutedEventHandler Här är en underklass av 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

Kommentarer

Basimplementeringen innehåller reflektion för att fastställa rätt hanterare för alla fall där hanteraren inte är bokstavligen RoutedEventHandler, och det här reflektionssteget har vissa prestandakonsekvenser. Anrop kan göras mer effektiva genom att inte förlita sig på reflektion. Det här är scenariot som motiverar att den här metoden är tillgänglig för alla routade händelseargumentklasser som väljer att åsidosätta den. Implementeringar bör inte anropa basen för den här metoden eftersom implementeringen redan bör vara ansvarig för att anropa typsäkra hanterare.

Anteckningar till arvingar

Den här metoden är avsedd att åsidosättas av härledda händelsedataklasser för att ge effektivare anrop av deras ombud. Implementeringen bör skicka den angivna genericHandler till den typspecifika delegaten och sedan anropa den hanteraren.

Standardimplementeringen försöker anropa den angivna hanteraren och försöker omvandla den till RoutedEventHandler. Om antingen genericHandler eller genericTarget anges som nullgenereras undantag.

Gäller för