Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menetapkan Nilai Harta Menggunakan Refleksi Apabila Nilai ialah Rentetan?
Pengenalan: Memanipulasi objek secara pemrograman melalui refleksi selalunya memerlukan penetapan sifat menggunakan tugasan pelbagai jenis data. Soalan ini meneroka situasi biasa: menetapkan sifat dengan nilai rentetan.
Soalan: Pertimbangkan kelas Kapal yang mempunyai sifat Latitud jenis berganda. Cuba tetapkan sifat ini menggunakan refleksi, kodnya adalah seperti berikut:
<code>Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, value, null);</code>
Walau bagaimanapun, kod ini gagal dengan ArgumentException kerana nilai rentetan tidak boleh ditukar terus kepada double.
Penyelesaian: Untuk menyelesaikan isu ini, nilai rentetan mesti ditukar secara eksplisit kepada jenis yang betul berdasarkan PropertyInfo. Alat biasa untuk tujuan ini ialah Convert.ChangeType(). Ia menggunakan maklumat masa jalan untuk menukar antara jenis IConvertible.
Kod yang diubah suai menggunakan Convert.ChangeType() ialah:
<code>Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, Convert.ChangeType(value, propertyInfo.PropertyType), null);</code>
Kod ini berjaya menetapkan sifat Latitud kepada nilai berganda yang ditukar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menetapkan Nilai Harta Menggunakan Refleksi Apabila Nilai ialah Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!