Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh menggunakan kaedah generik secara dinamik di C#?

Bagaimanakah saya boleh menggunakan kaedah generik secara dinamik di C#?

Barbara Streisand
Barbara Streisandasal
2025-02-03 07:43:12670semak imbas

How Can I Dynamically Invoke Generic Methods in C#?

c#dinamik memanggil butiran kaedah generik

Dalam pengaturcaraan C#, kita sering menghadapi parameter jenis kaedah generik apabila runtime dan bukannya menyusun. Pada masa ini, kaedah panggilan dinamik diperlukan. Artikel ini secara beransur -ansur akan menjelaskan bagaimana untuk mencapai matlamat ini.

Langkah pertama: Gunakan maklumat kaedah refleksi

Pertama sekali, kita perlu menggunakan refleksi untuk mendapatkan maklumat mengenai kaedah generik. Dalam kod contoh, kami menggunakan kaedah untuk mendapatkan maklumat kaedah.

Langkah 2: Membina kaedah generik GetMethod(nameof(Sample.GenericMethod))

Seterusnya, kita perlu menggunakan parameter jenis yang diperoleh secara dinamik untuk membina kaedah generik. Ini boleh dilaksanakan melalui kaedah , di mana adalah objek

dinamik.

MakeGenericMethod(myType) Langkah 3: Panggil kaedah generik myType Type

Akhirnya, kita boleh menggunakan kaedah

untuk memanggil kaedah generik yang dibina. Untuk kaedah statik, parameter pertama kaedah hendaklah .

pengubahsuaian sampel kod

Invoke Invoke Dalam contoh, kod selepas memanggil null adalah seperti berikut:

ringkasan

Dinamik Memanggil kaedah generik adalah teknologi yang kuat dalam C#. Menguasai cara menggunakan refleks untuk mencapai fungsi ini dapat membantu pemaju mengendalikan adegan di mana parameter jenis tidak dapat ditentukan semasa penyusunan. GenericMethod<T>

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan kaedah generik secara dinamik di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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