在 .NET 4 中從動態物件擷取屬性
在 .NET 4 中使用 dynamic
關鍵字聲明的動態物件在嘗試透過反射檢索屬性值時可能會帶來挑戰。
問題:
如何從動態物件中取得屬性名稱及其對應值的字典?
範例:
<code class="language-csharp">dynamic s = new ExpandoObject(); s.Path = "/Home"; s.Name = "Home"; // 如何枚举 Path 和 Name 属性并检索它们的值? IDictionary<string, object> propertyValues = ???</code>
答案:
對於 ExpandoObject
對象,解決方案非常簡單。 ExpandoObject
為其屬性實作了 IDictionary<string, object>
介面:
<code class="language-csharp">IDictionary<string, object> propertyValues = (IDictionary<string, object>)s;</code>
請注意,此方法可能不適用於所有動態物件。對於更通用的動態對象,您需要透過 IDynamicMetaObjectProvider
使用 DLR。
以上是如何從 .NET 4 動態物件檢索屬性和值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!