Menggunakan Refleksi untuk Mendapatkan Rujukan Kelas C# daripada Rentetan
Refleksi C# menyediakan mekanisme yang berkuasa untuk mengakses dan memanipulasi maklumat jenis masa jalan secara dinamik. Ini termasuk mendapatkan semula rujukan kelas hanya menggunakan perwakilan rentetannya.
Prosesnya:
Kaedah teras untuk tugasan ini ialah Type.GetType()
. Kaedah ini menerima rentetan yang mengandungi nama jenis yang layak sepenuhnya dan mengembalikan objek Type
yang mewakili jenis itu.
Contoh:
Katakan anda mempunyai kelas bernama FooClass
. Untuk mendapatkan objek Type
nya:
<code class="language-csharp">string className = "FooClass"; Type type = Type.GetType(className);</code>
Untuk mengakses kaedah statik dalam FooClass
(cth., MyMethod
), gunakan GetMethod()
:
<code class="language-csharp">MethodInfo method = type.GetMethod("MyMethod", BindingFlags.Static | BindingFlags.Public);</code>
Akhir sekali, gunakan kaedah menggunakan Invoke()
:
<code class="language-csharp">method.Invoke(null, null); // null for static methods, null for no parameters</code>
Ingat bahawa null
digunakan sebagai hujah pertama untuk kaedah statik (tiada contoh diperlukan) dan hujah kedua ialah tatasusunan parameter (null jika kaedah tidak mengambil parameter).
Mengendalikan Perhimpunan Luar:
Contoh di atas menganggap FooClass
berada dalam perhimpunan yang sama. Untuk jenis yang terletak dalam perhimpunan yang berbeza, anda mesti membekalkan nama pemasangan sebagai sebahagian daripada nama jenis yang layak sepenuhnya. Format yang tepat bergantung pada lokasi perhimpunan. Rujuk dokumentasi MSDN untuk panduan terperinci tentang menentukan nama pemasangan dalam kaedah Type.GetType()
.
Penerokaan Selanjutnya:
Untuk pemahaman yang lebih teliti tentang refleksi C#, rujuk dokumentasi rasmi Microsoft pada Type.GetType()
, MethodInfo.GetMethod()
dan MethodInfo.Invoke()
. Sumber ini menawarkan butiran komprehensif dan senario penggunaan lanjutan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Rujukan Kelas daripada String dalam C# Menggunakan Reflection?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!