Rumah >pembangunan bahagian belakang >C++ >Bolehkah C# memanggil fungsi secara dinamik dari rentetan menggunakan refleksi?

Bolehkah C# memanggil fungsi secara dinamik dari rentetan menggunakan refleksi?

DDD
DDDasal
2025-01-26 02:21:08974semak imbas

Can C# Invoke Functions Dynamically from Strings Using Reflection?

Memanggil fungsi melalui rentetan dalam C#

PHP boleh memanggil fungsi dengan mudah melalui rentetan. Jadi, bolehkah C# melaksanakan fungsi ini?

Jawapan: Refleksi

Ya, refleksi membolehkan anda melaksanakan kaedah secara dinamik melalui rentetan. Begini caranya:

<code class="language-csharp">Type thisType = this.GetType();
MethodInfo theMethod = thisType.GetMethod(TheCommandString);
theMethod.Invoke(this, userParameters);</code>

Kod ini berfungsi kerana ia mendapatkan MethodInfo kaedah menggunakan perwakilan rentetan nama kaedah.

Kaedah bukan awam

Jika anda perlu memanggil kaedah bukan awam, gunakan BindingFlags:

<code class="language-csharp">MethodInfo theMethod = thisType
    .GetMethod(TheCommandString, BindingFlags.NonPublic | BindingFlags.Instance);
theMethod.Invoke(this, userParameters);</code>

Ini menyatakan bahawa kaedah itu bukan umum dan khusus contoh.

Atas ialah kandungan terperinci Bolehkah C# memanggil fungsi secara dinamik dari rentetan menggunakan refleksi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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