Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh menggunakan Kaedah Statik dalam Ruang Nama Tertentu Menggunakan Refleksi dalam C#?

Bagaimanakah saya boleh menggunakan Kaedah Statik dalam Ruang Nama Tertentu Menggunakan Refleksi dalam C#?

Patricia Arquette
Lepaskan: 2024-12-29 22:17:27
asal
428 orang telah melayarinya

How Can I Invoke Static Methods in a Specific Namespace Using Reflection in C#?

Memanggil Kaedah Statik dengan Refleksi

Reflection menyediakan mekanisme yang berkuasa untuk mengakses dan memanipulasi jenis .NET dan ahlinya pada masa jalan. Satu tugas sedemikian ialah menggunakan kaedah statik kelas. Artikel ini menangani keperluan khusus untuk memanggil kaedah statik dalam ruang nama tertentu (mySolution.Macros) menggunakan pantulan.

Latar Belakang

Dalam coretan kod yang disediakan, matlamatnya ialah untuk lelaran melalui senarai kelas statik dalam ruang nama tertentu dan menggunakan kaedah Run mereka. Walau bagaimanapun, memandangkan kaedah adalah statik, pendekatan standard untuk mencipta contoh dan kemudian menggunakan kaedah itu tidak boleh digunakan.

Penyelesaian

Kunci untuk memanggil kaedah statik dengan refleksi adalah untuk memahami bahawa hujah pertama dihantar kepada MethodInfo.Invoke diabaikan untuk kaedah statik. Oleh itu, kod yang diubah suai di bawah berjaya menggunakan kaedah statik:

foreach (var tempClass in macroClasses)
{
    // using reflection I will be able to run the method as:
    tempClass.GetMethod("Run").Invoke(null, null);
}
Salin selepas log masuk

Seperti yang dinyatakan dalam ulasan, adalah amalan yang baik untuk memastikan kaedah tersebut memang statik sebelum memanggil GetMethod:

tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan Kaedah Statik dalam Ruang Nama Tertentu Menggunakan Refleksi 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