Mengakses dan Menggunakan Kaedah C# Statik Secara Dinamik melalui Refleksi
Bayangkan anda mempunyai nama kelas yang disimpan sebagai rentetan (cth., "MyClass") dan perlu memanggil salah satu kaedah statiknya. Refleksi menyediakan mekanisme untuk mencapai tingkah laku dinamik ini. Panduan ini menunjukkan cara menggunakan refleksi untuk mendapatkan semula rujukan kelas daripada nama rentetannya dan seterusnya menggunakan kaedah statik.
Menggunakan Type.GetType untuk Pengambilan Kelas
Kaedah Type.GetType
ialah kunci untuk mengakses kelas secara dinamik. Ia mengambil nama kelas yang layak sepenuhnya sebagai rentetan dan mengembalikan objek Type
yang mewakili kelas itu:
<code class="language-csharp">Type classType = Type.GetType("MyClass"); </code>
Kaedah Invokasi Menggunakan Refleksi
Sebaik sahaja anda mempunyai objek Type
, anda boleh menggunakan GetMethod
untuk mendapatkan objek MethodInfo
yang mewakili kaedah statik yang anda ingin gunakan:
<code class="language-csharp">MethodInfo methodInfo = classType.GetMethod("MyStaticMethod", BindingFlags.Static | BindingFlags.Public);</code>
Ini mendapatkan semula kaedah yang dinamakan "MyStaticMethod," memastikan kaedah tersebut adalah kaedah statik awam. BindingFlags
menyatakan kriteria carian.
Akhir sekali, gunakan kaedah menggunakan Invoke
:
<code class="language-csharp">methodInfo.Invoke(null, null); // null for static method, null for no parameters</code>
Untuk kaedah dengan parameter, hantarkan tatasusunan objek sebagai argumen kedua kepada Invoke
.
Pertimbangan Penting:
try-catch
blok untuk mengendalikan kemungkinan pengecualian (cth., TypeLoadException
, MethodNotFoundException
).BindingFlags
dengan sewajarnya.Dengan menggunakan teknik ini, anda boleh membuka kunci kuasa seruan kaedah dinamik dalam C#, membolehkan aplikasi yang fleksibel dan boleh disesuaikan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Refleksi dalam C# untuk Mendapat Kaedah Statik pada Kelas yang Diberikan Namanya sebagai Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!