RoutedEventArgs.InvokeEventHandler(Delegate, Object) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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.