Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh mengakses kaedah peribadi menggunakan refleksi di C#?

Bagaimanakah saya boleh mengakses kaedah peribadi menggunakan refleksi di C#?

DDD
Lepaskan: 2025-01-25 05:17:09
asal
477 orang telah melayarinya

How Can I Access Private Methods Using Reflection in C#?

memanfaatkan refleksi untuk memanggil kaedah c# peribadi

Refleksi dalam C# menawarkan keupayaan untuk mengakses dan menggunakan kaedah kelas swasta -fungsi yang biasanya dihadkan dari kod luaran. Ini boleh berfaedah dalam situasi yang memerlukan panggilan kaedah dinamik, kontinjen pada data runtime.

Coretan kod anda menggunakan

untuk mencari kaedah mengikut nama. Walau bagaimanapun, GetMethod() lalai untuk tidak termasuk ahli swasta. Untuk memasukkan kaedah peribadi, anda mesti menggabungkan spesifik GetMethod() apabila memanggil BindingFlags: GetMethod()

<code class="language-csharp">MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType, 
BindingFlags.NonPublic | BindingFlags.Instance);
dynMethod.Invoke(this, new object[] { methodParams });</code>
Salin selepas log masuk

Memastikan kemasukan kaedah bukan awam (swasta) dalam carian, manakala BindingFlags.NonPublic mengehadkan carian untuk kaedah contoh. Gabungan ini menjamin bahawa BindingFlags.Instance dengan betul mengenal pasti kaedah peribadi yang dikehendaki dalam contoh kelas semasa. GetMethod()

Untuk maklumat terperinci mengenai penyesuaian carian kaedah anda, rujuk dokumentasi C# pada penghitungan

. Dokumentasi ini secara komprehensif menyenaraikan semua bendera yang tersedia untuk carian penapisan di seluruh kaedah, bidang, dan ahli kelas lain. BindingFlags

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengakses kaedah peribadi menggunakan refleksi di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan