Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Kami Boleh Mencipta Kaedah `FromEvent` Generik untuk Mengendalikan Acara Sebarang Jenis dan Senarai Parameter dalam C#?

Bagaimanakah Kami Boleh Mencipta Kaedah `FromEvent` Generik untuk Mengendalikan Acara Sebarang Jenis dan Senarai Parameter dalam C#?

Patricia Arquette
Lepaskan: 2024-12-28 05:00:10
asal
113 orang telah melayarinya

How Can We Create a Generic `FromEvent` Method for Handling Events of Any Type and Parameter List in C#?

Kaedah Dari Peristiwa Tujuan Umum tanpa Menentukan Jenis Perwakilan

Pernyataan Masalah:

Pada masa ini, mencipta tugas berdasarkan acara memerlukan mentakrifkan kaedah FromEvent tersuai untuk setiap acara dalam setiap kelas. Ini boleh menjadi rumit dan berulang. Matlamatnya adalah untuk membangunkan kaedah FromEvent tujuan umum yang boleh mengendalikan sebarang acara pada sebarang objek.

Cabaran:

Cabaran utama yang dihadapi ialah:

  • Melalukan acara sebagai rentetan (cth., "OnCompletion") dalam kod menimbulkan ralat kerana acara itu hanya boleh diakses di sebelah kiri pengendali = atau -=.
  • Perwakilan acara tidak diketahui pada masa jalanan dan perlu diubah.
  • Mengeluarkan IL untuk menetapkan hasil TaskCompletionSource secara dinamik.

Penyelesaian:

Penyelesaian komprehensif melibatkan:

  1. Penciptaan Kaedah Dinamik: Cipta DynamicMethod untuk setiap jenis perwakilan yang ditemui. Kaedah ini secara dinamik memanggil kaedah SetResult kelas TaskCompletionSourceHolder, yang seterusnya menetapkan hasil tugasan.
  2. Refleksi: Gunakan refleksi untuk mendapatkan semula sifat EventHandlerType acara dan buat perwakilan daripada yang dipancarkan DynamicMethod.
  3. Menggantikan Jenis Generik: Gunakan kaedah sambungan TaskFromEvent dan bukannya secara manual menentukan jenis perwakilan (cth., TaskFromEvent), seperti yang ditunjukkan dalam kod berikut:
object[] result = await obj.FromEvent("Event Name");
Salin selepas log masuk

Kaedah ini menyokong acara dengan sebarang pulangan jenis dan senarai parameter. Ia menghapuskan keperluan untuk kod boilerplate dan membolehkan pengendalian acara yang lancar dan boleh digunakan semula daripada pelbagai objek.

Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mencipta Kaedah `FromEvent` Generik untuk Mengendalikan Acara Sebarang Jenis dan Senarai Parameter dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan