Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menetapkan Nilai Harta Menggunakan Refleksi Apabila Nilai ialah Rentetan?

Bagaimanakah Saya Boleh Menetapkan Nilai Harta Menggunakan Refleksi Apabila Nilai ialah Rentetan?

Susan Sarandon
Lepaskan: 2025-01-20 10:37:09
asal
774 orang telah melayarinya

How Can I Set a Property's Value Using Reflection When the Value is a String?

Gunakan refleksi untuk menetapkan nilai atribut 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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan