RoutedEventArgs.InvokeEventHandler(Delegate, Object) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
W przypadku zastąpienia w klasie pochodnej zapewnia sposób wywoływania procedur obsługi zdarzeń w sposób specyficzny dla typu, co może zwiększyć wydajność implementacji podstawowej.
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
Wywołanie ogólnej procedury obsługi/delegata.
- genericTarget
- Object
Obiekt docelowy, na którym powinna zostać wywołana podana procedura obsługi.
Przykłady
Poniżej przedstawiono pseudokod, który ilustruje podstawowy wzorzec, którego można użyć do implementacji.
MyRoutedEventHandler
W tym miejscu znajduje się podklasa .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
Uwagi
Implementacja podstawowa zawiera odbicie w celu określenia właściwej procedury obsługi dla każdego przypadku, w którym program obsługi nie jest dosłownie RoutedEventHandler, a ten krok odbicia ma pewne konsekwencje dotyczące wydajności. Wywołania mogą być bardziej wydajne, nie opierając się na odbiciu. Jest to scenariusz, który motywuje tę metodę jako dostępną dla dowolnej klasy argumentów zdarzeń kierowanych, która zdecyduje się go zastąpić. Implementacje nie powinny wywoływać bazy dla tej metody, ponieważ implementacja powinna być już odpowiedzialna za wywoływanie bezpiecznych procedur obsługi typów.
Uwagi dotyczące dziedziczenia
Ta metoda ma zostać zastąpiona przez pochodne klasy danych zdarzeń w celu zapewnienia bardziej wydajnego wywołania ich delegatów. Implementacja powinna rzutować podaną wartość genericHandler
do delegata specyficznego dla typu, a następnie wywołać procedurę obsługi.
Domyślna implementacja podejmie próbę wywołania podanej procedury obsługi, próbując rzutować ją jako RoutedEventHandler. Jeśli zostanie podana wartość genericHandler
null
lub genericTarget
jako , zostaną zgłoszone wyjątki.