RoutedEventArgs.InvokeEventHandler(Delegate, Object) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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 oproti základní implementaci.
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 / implementace delegáta, která se má vyvolat.
- genericTarget
- Object
Cíl, na kterém má 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 pro implementaci. MyRoutedEventHandler
Tady 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 případ, kdy obslužná rutina není doslova RoutedEventHandler, a tento krok reflexe má určité důsledky výkonu. Vyvolání může být efektivnější tím, že se nespoléhá na reflexi. Toto je scénář, který motivuje tuto metodu, že je k dispozici pro všechny směrované argumenty události 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í bezpečných obslužných rutin typu.
Poznámky pro dědice
Tato metoda je určena k přepsání odvozenými datovými třídami událostí za účelem efektivnějšího vyvolání jejich delegátů. Implementace by měla přetypovat zadaného genericHandler
delegáta specifického pro typ a pak vyvolat příslušnou obslužnou rutinu.
Výchozí implementace se pokusí vyvolat zadanou obslužnou rutinu a pokusí se ji přetypovat jako RoutedEventHandler. Pokud je buď genericHandler
nebo genericTarget
je k dispozici jako null
, výjimky budou vyvolány.