Condividi tramite


RoutedEventArgs.InvokeEventHandler(Delegate, Object) Metodo

Definizione

In caso di override in una classe derivata, consente di richiamare i gestori eventi in base al tipo, aumentando l'efficienza nell'implementazione di base.

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)

Parametri

genericHandler
Delegate

Implementazione del delegato/gestore generico da richiamare.

genericTarget
Object

Destinazione in cui deve essere richiamato il gestore specificato.

Esempio

Di seguito è riportato uno pseudocodice che illustra un modello di base che può essere usato per l'implementazione. Ecco una MyRoutedEventHandler sottoclasse di 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

Commenti

L'implementazione di base incorpora la reflection per determinare il gestore corretto per qualsiasi caso in cui il gestore non è letteralmente RoutedEventHandler, e questo passaggio di reflection ha alcune conseguenze sulle prestazioni. Le chiamate possono essere rese più efficienti non basandosi sulla riflessione. Questo è lo scenario che motiva la disponibilità di questo metodo per qualsiasi classe di argomenti eventi indirizzati che scelgono di eseguirne l'override. Le implementazioni non devono chiamare la base per questo metodo, perché l'implementazione deve essere già responsabile per richiamare i gestori sicuri del tipo.

Note per gli eredi

Questo metodo deve essere sottoposto a override da classi di dati eventi derivate per fornire una chiamata più efficiente dei delegati. L'implementazione deve eseguire il cast dell'oggetto fornito genericHandler al delegato specifico del tipo e quindi richiamare tale gestore.

L'implementazione predefinita tenterà di richiamare il gestore fornito, tentando di eseguirne il cast come RoutedEventHandler. genericHandler genericTarget Se o viene fornito come null, verranno generate eccezioni.

Si applica a