RoutedEventArgs.InvokeEventHandler(Delegate, Object) Metode

Definisi

Ketika ditimpa di kelas turunan, menyediakan cara untuk memanggil penanganan aktivitas dengan cara khusus jenis, yang dapat meningkatkan efisiensi atas implementasi dasar.

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)

Parameter

genericHandler
Delegate

Implementasi handler/delegasi generik yang akan dipanggil.

genericTarget
Object

Target tempat handler yang disediakan harus dipanggil.

Contoh

Berikut ini adalah pseudocode yang menggambarkan pola dasar yang dapat digunakan untuk implementasi. Di sini, MyRoutedEventHandler adalah subkelas dari 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

Keterangan

Implementasi dasar menggabungkan refleksi untuk menentukan handler yang tepat untuk setiap kasus di mana handler tidak secara RoutedEventHandlerharfiah , dan langkah refleksi ini memang memiliki beberapa konsekuensi performa. Pemanggilan dapat dibuat lebih efisien dengan tidak mengandalkan refleksi. Ini adalah skenario yang memotivasi metode ini tersedia untuk kelas argumen peristiwa yang dirutekan yang memilih untuk mengambil alihnya. Implementasi tidak boleh memanggil basis untuk metode ini, karena implementasi Anda harus sudah bertanggung jawab untuk memanggil jenis penangan yang aman.

Catatan Bagi Inheritor

Metode ini dimaksudkan untuk ditimpa oleh kelas data peristiwa turunan untuk memberikan pemanggilan delegasi yang lebih efisien. Implementasi harus mentransmisikan yang disediakan genericHandler ke delegasi khusus jenis, lalu memanggil handler tersebut.

Implementasi default akan mencoba memanggil handler yang disediakan, mencoba mentransmisikannya sebagai RoutedEventHandler. Jika salah satu genericHandler atau genericTarget disediakan sebagai null, pengecualian akan dinaikkan.

Berlaku untuk