Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Cekap Mengakses Sifat Objek Dinamik dalam .NET?
Gunakan kamus untuk mengakses sifat objek dinamik dengan cekap
Latar belakang:
Apabila mencipta objek dinamik menggunakan kata kunci dynamic
dalam .NET 4, mendapatkan kamus sifat dan nilainya boleh menjadi satu cabaran. Kaedah refleksi tradisional mungkin tidak mencukupi.
Atribut objek dinamik:
Objek dinamik dalam .NET, seperti ExpandoObject
, mencipta sifat secara dinamik pada masa jalan. Pengkompil tidak mengetahui sifat ini terlebih dahulu, menjadikannya sukar untuk mengaksesnya menggunakan teknik standard.
Penyelesaian untuk ExpandoObject:
Nasib baik untuk ExpandoObject
ada penyelesaian mudah. Memandangkan ExpandoObject
melaksanakan antara muka IDictionary<string, object>
, kami boleh terus menghantar objek dinamik ke jenis ini dan mengakses sifatnya dalam bentuk kamus:
<code class="language-C#">IDictionary<string, object> propertyValues = (IDictionary<string, object>)s;</code>
Objek dinamik universal:
Walau bagaimanapun, pendekatan ini tidak berfungsi dengan objek dinamik generik yang tidak diwarisi daripada IDictionary<string, object>
. Dalam kes ini, kita perlu memanfaatkan Dynamic Language Runtime (DLR). Ini melibatkan penggunaan antara muka IDynamicMetaObjectProvider
:
<code class="language-C#">var metaObject = (IDynamicMetaObjectProvider)s; var properties = metaObject.GetMetaObject(Expression.Constant(s)).GetDynamicMemberNames();</code>
Kaedah ini melibatkan operasi DLR yang lebih kompleks dan harus dipertimbangkan untuk objek bukanExpandoObject
dinamik.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mengakses Sifat Objek Dinamik dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!