Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggunakan Refleksi dalam C# untuk Mendapat Kaedah Peribadi?
Dalam C#, kaedah persendirian biasanya disembunyikan atas sebab pengkapsulan dan keselamatan. Walau bagaimanapun, situasi mungkin timbul di mana panggilan secara dinamik kaedah peribadi ini pada masa jalan menjadi perlu. Di sinilah kuasa pantulan berperanan.
PanggilanStandard GetMethod()
hanya mendapatkan semula kaedah awam, dilindungi dan dalaman. Untuk mengakses kaedah persendirian, anda mesti menggunakan versi terlampau beban GetMethod()
dan nyatakan BindingFlags
yang betul.
Kuncinya ialah menggunakan BindingFlags
yang sesuai dalam panggilan GetMethod()
. Begini caranya:
<code class="language-csharp">MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType, BindingFlags.NonPublic | BindingFlags.Instance); dynMethod.Invoke(this, new object[] { methodParams });</code>
Coretan kod ini mendapatkan semula kaedah peribadi (dinamakan secara dinamik menggunakan "Draw_" itemType) dan kemudian memanggilnya menggunakan dynMethod.Invoke()
.
Penghitungan BindingFlags
mengawal ahli mana yang disertakan dalam carian. Untuk permohonan kaedah persendirian, BindingFlags.NonPublic
dan BindingFlags.Instance
adalah penting:
BindingFlags.NonPublic
: Bendera ini termasuk ahli bukan awam (swasta dan dilindungi).BindingFlags.Instance
: Bendera ini mengehadkan carian kepada kaedah contoh, tidak termasuk kaedah statik.Untuk maklumat terperinci tentang BindingFlags
penghitungan dan pelbagai pilihannya, rujuk dokumentasi rasmi Microsoft [masukkan URL dokumentasi di sini].
Pendekatan ini membolehkan pembangun memanggil kaedah peribadi secara dinamik dari dalam contoh kelas yang sama, membuka kemungkinan untuk manipulasi masa jalan lanjutan ahli kelas.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Refleksi dalam C# untuk Mendapat Kaedah Peribadi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!