Mendapatkan semula sifat daripada objek dinamik dalam .NET 4
Objek dinamik yang diisytiharkan menggunakan kata kunci dynamic
dalam .NET 4 boleh menyebabkan cabaran apabila cuba mendapatkan nilai hartanah melalui refleksi.
Soalan:
Bagaimana untuk mendapatkan kamus nama atribut dan nilai sepadannya daripada objek dinamik?
Contoh:
<code class="language-csharp">dynamic s = new ExpandoObject(); s.Path = "/Home"; s.Name = "Home"; // 如何枚举 Path 和 Name 属性并检索它们的值? IDictionary<string, object> propertyValues = ???</code>
Jawapan:
Untuk ExpandoObject
objek, penyelesaiannya sangat mudah. ExpandoObject
melaksanakan antara muka IDictionary<string, object>
untuk sifatnya:
<code class="language-csharp">IDictionary<string, object> propertyValues = (IDictionary<string, object>)s;</code>
Sila ambil perhatian bahawa kaedah ini mungkin tidak berfungsi untuk semua objek dinamik. Untuk objek dinamik yang lebih umum, anda perlu menggunakan DLR melalui IDynamicMetaObjectProvider
.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Hartanah dan Nilai daripada Objek Dinamik .NET 4?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!