RoutedEventArgs.InvokeEventHandler(Delegate, Object) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.