Gunakan refleksi untuk mencipta objek generik secara dinamik dalam C#
Dalam C#, kita sering menghadapi situasi di mana kita perlu mencipta objek secara dinamik berdasarkan rentetan jenis. Pendekatan ini menggunakan refleksi untuk mengelakkan pengisytiharan jenis eksplisit.
Pertimbangkan struktur kelas berikut:
public class Item { } public class Task<T> { } public class TaskA<T> : Task<T> { } public class TaskB<T> : Task<T> { }
Matlamat kami adalah untuk menggunakan refleksi untuk mencipta tika TaskA atau TaskB secara dinamik. Memandangkan jenisnya tidak diketahui terlebih dahulu, kami akan bergantung pada rentetan jenis, seperti "ruang nama.TaskA" atau "ruang nama.TaskAB".
Menggunakan refleksi, kita boleh mencapainya seperti berikut:
var type = Type.GetType("namespace.TaskA`1"); // 将“namespace”替换为您实际的命名空间 Type[] typeArgs = { typeof(Item) }; var makeme = type.MakeGenericType(typeArgs); object instance = Activator.CreateInstance(makeme);
Kaedah ini mencipta instance TaskA
Type type = typeof(IReadOnlyDictionary);
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membuat Objek Generik Secara Dinamik dalam C# Menggunakan Refleksi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!