Rumah >pembangunan bahagian belakang >C++ >Bolehkah refleksi mengambil nilai harta dari rentetan tanpa pengendalian jenis yang jelas?
Menggunakan Refleksi Untuk Memudahkan Transformasi Data: Mendapatkan Nilai Harta Dari String
Pemaju yang bertujuan untuk mengoptimumkan transformasi data menggunakan refleksi, memberi tumpuan kepada memudahkan proses mendapatkan nilai harta. Cabarannya adalah untuk mengelakkan pengendalian jenis yang jelas dan sebaliknya mengambil nilai secara langsung dari nama harta rentetan.
adakah mungkin?
Ya, refleksi membolehkan pengambilan nilai harta dari rentetan tanpa perlu menentukan jenis data secara eksplisit.
Penyelesaian:
Ini dapat dicapai menggunakan kaedah dan GetProperty
dalam refleksi. GetValue
Contoh kod:
Kod berikut menunjukkan pendekatan yang diperkemas:
<code class="language-csharp">public static object GetPropValue(object src, string propName) { return src.GetType().GetProperty(propName)?.GetValue(src, null); }</code>kaedah
ini mengambil objek (GetPropValue
untuk mencari harta berdasarkan nama rentetan. Pengendali null-conditional (src
kemudian mengambil nilai harta itu. Lulus propName
sebagai hujah kedua menggunakan pengikatan lalai. GetProperty
?.
GetValue
Pertimbangan penting: null
Pengendalian ralat adalah penting. Versi yang lebih baik ini termasuk pemeriksaan null untuk mengelakkan pengecualian jika objek input atau harta adalah batal atau tidak wujud. Pengendalian ralat yang teguh harus ditambah kepada persekitaran pengeluaran untuk menguruskan pengecualian yang berpotensi dengan anggun.
Atas ialah kandungan terperinci Bolehkah refleksi mengambil nilai harta dari rentetan tanpa pengendalian jenis yang jelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!