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); }
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);
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!