Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mencipta Contoh Jenis Generik secara Dinamik pada Runtime?
Dalam sesetengah kes, anda mungkin perlu mencipta tika jenis generik secara dinamik berdasarkan jenis yang ditentukan semasa masa jalan. Ini boleh mencabar kerana jenis generik biasanya ditakrifkan pada masa penyusunan.
Satu cara untuk mencapai matlamat ini adalah dengan menggunakan refleksi. Berikut ialah penyelesaian yang membolehkan anda membuat contoh jenis generik menggunakan pembolehubah yang mengandungi jenis sasaran:
<code class="language-csharp">Type k = typeof(double); Type genericListType = typeof(List<>); // 注意这里<> var specificListType = genericListType.MakeGenericType(k); var list = Activator.CreateInstance(specificListType);</code>Kaedah
MakeGenericType
menerima satu parameter Type
dan mengembalikan objek Type
baharu yang mewakili jenis generik dengan parameter jenis yang ditentukan. Dalam kes ini, kami memasukkan double
daripada Type
untuk menentukan jenis sasaran.
Selepas mendapatkan jenis generik tertentu, kita boleh menggunakan kaedah Activator.CreateInstance
untuk membuat instantiat objek jenis ini. Kaedah ini menggunakan pantulan untuk mencipta contoh baharu bagi jenis objek yang ditentukan secara dinamik.
Dengan pendekatan ini, anda boleh mencipta kejadian jenis generik secara dinamik berdasarkan jenis yang ditentukan pada masa jalan, membolehkan lebih fleksibiliti dan kebolehsuaian kod. Ambil perhatian bahawa typeof(List)
perlu ditukar kepada typeof(List<>)
untuk mewakili jenis generik List<T>
dengan betul.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Contoh Jenis Generik secara Dinamik pada Runtime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!