Akses Kelas Dinamik dalam C# menggunakan Reflection
Pembangun C# sering menghadapi senario yang memerlukan akses kelas dinamik berdasarkan perwakilan rentetan. Artikel ini menunjukkan cara memanfaatkan refleksi untuk mendapatkan semula rujukan kelas daripada rentetan.
Bayangkan anda mempunyai rentetan ("Kelas Saya", sebagai contoh) yang mewakili nama kelas, dan anda perlu memanggil kaedah dalam kelas itu. Refleksi menyediakan penyelesaiannya.
Kefungsian teras bergantung pada kaedah Type.GetType
. Berikut ialah contoh:
<code class="language-csharp">using System; using System.Reflection; public class Example { public static void Main(string[] args) { Type type = Type.GetType("MyClass"); // Get the Type object MethodInfo method = type.GetMethod("MyMethod", BindingFlags.Public | BindingFlags.Static); // Get the method method.Invoke(null, null); // Invoke the method } } public class MyClass { public static void MyMethod() { Console.WriteLine("MyMethod called!"); } }</code>
Kod ini menggunakan Type.GetType
untuk mendapatkan objek Type
daripada rentetan. GetMethod
kemudian mendapatkan semula kaedah statik yang ditentukan dan Invoke
melaksanakannya.
Perhatikan bahawa contoh ini menggunakan kaedah statik awam. Melaraskan BindingFlags
membenarkan akses kepada jenis kaedah lain (cth., BindingFlags.Instance | BindingFlags.NonPublic
untuk kaedah contoh peribadi).
Pemahaman Type.GetType
dan kaedah refleksi lain membuka kunci interaksi dinamik dengan kelas C# anda, menawarkan fleksibiliti yang ketara dalam aplikasi anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Rujukan Kelas C# daripada Rentetan Menggunakan Refleksi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!