Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggunakan Kaedah Peribadi Secara Dinamik Menggunakan Refleksi dalam C#?

Bagaimanakah Saya Boleh Menggunakan Kaedah Peribadi Secara Dinamik Menggunakan Refleksi dalam C#?

Barbara Streisand
Barbara Streisandasal
2025-01-25 05:26:13414semak imbas

How Can I Dynamically Invoke Private Methods Using Reflection in C#?

Mengakses Kaedah Peribadi Menggunakan C# Reflection

Refleksi menawarkan cara yang berkuasa untuk berinteraksi dengan kaedah peribadi secara dinamik. Walau bagaimanapun, fungsi GetMethod() standard sahaja tidak akan mengakses ahli persendirian. Had ini diatasi dengan menggunakan BindingFlags penghitungan.

Penyelesaian:

Untuk mendapatkan semula kaedah peribadi, ubah suai panggilan GetMethod() anda untuk memasukkan BindingFlags yang diperlukan. Contoh ini menunjukkan cara:

<code class="language-csharp">MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType, 
    BindingFlags.NonPublic | BindingFlags.Instance);</code>

Di sini, BindingFlags.NonPublic memastikan kaedah peribadi disertakan dalam carian dan BindingFlags.Instance menyatakan bahawa kami sedang mencari kaedah contoh (berbanding dengan kaedah statik). Dengan bendera ini, GetMethod() akan berjaya mencari kaedah peribadi.

Selepas itu, gunakan kaedah persendirian menggunakan kaedah Invoke() pada objek MethodInfo yang dikembalikan, membekalkan parameter yang diperlukan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Kaedah Peribadi Secara Dinamik Menggunakan Refleksi dalam C#?. 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