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 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.