Jazyk

RoutedEventArgs.InvokeEventHandler(Delegate, Object) Metoda

Definice

Při přepsání v odvozené třídě poskytuje způsob, jak vyvolat obslužné rutiny událostí konkrétním způsobem, který může zvýšit efektivitu nad základní implementací.

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)

Parametry

genericHandler
Delegate

Obecná obslužná rutina / delegování implementace, která se má vyvolat.

genericTarget
Object

Cíl, na kterém by měla být vyvolána zadaná obslužná rutina.

Příklady

Následuje pseudokód, který znázorňuje základní vzor, který lze použít k implementaci. MyRoutedEventHandler Zde je podtřída 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

Poznámky

Základní implementace zahrnuje reflexi k určení správné obslužné rutiny pro jakýkoli případ, kdy obslužná rutina není doslova RoutedEventHandler, a tento krok reflexe má určité důsledky výkonu. Vyvolání je možné zefektivnit tím, že se nespoléhá na reflexi. Toto je scénář, který motivuje tuto metodu, je k dispozici pro všechny směrované argumenty událostí třídy, které se rozhodnou ji přepsat. Implementace by neměly volat základ pro tuto metodu, protože implementace by již měla být zodpovědná za vyvolání typů bezpečných obslužných rutin.

Poznámky pro dědice

Tato metoda je určena k přepsání odvozenými datovými třídami událostí, aby poskytovala efektivnější vyvolání jejich delegátů. Implementace by měla přetypovat zadaného genericHandler delegáta specifického pro typ a pak vyvolat obslužnou rutinu.

Výchozí implementace se pokusí vyvolat zadanou obslužnou rutinu a pokusí se ji přetypovat jako RoutedEventHandler. Pokud je uvedena genericHandler nebo genericTarget je uvedena jako null, výjimky budou vyvolány.

Platí pro