Dalam pelbagai senario, pembangun menghadapi keperluan untuk memanggil kaedah statik secara dinamik menggunakan pantulan. Pertanyaan di tangan berusaha untuk meneroka konsep ini dalam konteks tertentu.
Persoalan timbul daripada kelas statik yang berada dalam ruang nama mySolution.Macros. Setiap kelas mengandungi kaedah Run. Secara konvensional, jika kaedah ini tidak statik, kaedah ini boleh digunakan dan digunakan melalui refleksi seperti yang ditunjukkan dalam coretan kod yang disediakan.
Walau bagaimanapun, cabarannya terletak pada menggunakan kaedah statik . Untuk menangani perkara ini, adalah penting untuk ambil perhatian bahawa hujah pertama kepada MethodInfo.Invoke adalah berlebihan untuk kaedah statik. Oleh itu, null boleh digunakan sebagai parameter pertama:
foreach (var tempClass in macroClasses) { // using reflection I will be able to run the method as: tempClass.GetMethod("Run").Invoke(null, null); }
Pengulas mencadangkan untuk mengesahkan bahawa kaedah tersebut adalah statik sebelum menggunakan GetMethod. Ini boleh dicapai dengan memasukkan BindingFlags.Static ke dalam bendera mengikat:
tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);
Dengan menggunakan teknik ini, pembangun boleh menggunakan kaedah statik secara dinamik dalam ruang nama yang ditentukan, menyediakan cara untuk pengubahsuaian pangkalan kod yang fleksibel dan boleh diperluaskan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Kaedah Statik Secara Dinamik Menggunakan Refleksi dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!