Fungsi panggilan
mengikut nama yang disimpan dalam rentetanBanyak bahasa pengaturcaraan, termasuk PHP, membenarkan panggilan dinamik fungsi melalui rujukan rentetan. C# menyediakan keupayaan refleksi yang kaya, jadi fungsi ini juga tersedia dalam Rangka Kerja .NET.
Gunakan refleksi untuk panggilan fungsi dinamik
Untuk memanggil fungsi yang dikenal pasti oleh rentetan dalam C#, anda boleh menggunakan refleksi. Coretan kod berikut menunjukkan cara:
<code class="language-csharp">Type thisType = this.GetType(); MethodInfo theMethod = thisType.GetMethod(TheCommandString); theMethod.Invoke(this, userParameters);</code>
Dalam kod ini, nama kaedah yang akan dipanggil disimpan dalam pembolehubah TheCommandString
. Kaedah Type
digunakan untuk mendapatkan rujukan kepada kaedah mengikut nama dengan mendapatkan contoh thisType
(GetMethod
) bagi objek semasa. Akhir sekali, kaedah Invoke
digunakan untuk melaksanakan kaedah, menghantar objek sasaran (ini) dan sebarang parameter yang diperlukan (userParameters).
Akses kaedah peribadi
Adalah penting untuk ambil perhatian bahawa kaedah yang akan dipanggil mesti boleh diakses dalam konteks operasi pantulan. Secara lalai, kaedah menggunakan pengubah suai akses peribadi tidak boleh diakses menggunakan kaedah ini. Untuk menyelesaikan masalah ini, anda boleh memasukkan parameter GetMethod
dalam panggilan BindingFlags
seperti ini:
<code class="language-csharp">MethodInfo theMethod = thisType .GetMethod(TheCommandString, BindingFlags.NonPublic | BindingFlags.Instance);</code>
Dengan pengubahsuaian ini, bendera pengikatan NonPublic
dan Instance
ditentukan, membenarkan kaedah dipanggil tanpa mengira pengubah suai aksesnya.
Atas ialah kandungan terperinci Bagaimana saya boleh memanggil fungsi C# menggunakan namanya yang disimpan sebagai rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!