問題:存取 .NET 動態物件中的屬性
.NET 開發人員經常遇到需要存取動態物件屬性的情況。 然而,標準反射技術對於動態物件可能無效。 本問題探討了這個挑戰並在 .NET 4 框架內尋求解決方案。
答案:利用 IDictionary 介面
對於 ExpandoObject
實例,存在一個簡單的解。 ExpandoObject
實作 IDictionary<string, object>
接口,允許透過強制轉換直接存取屬性:
<code class="language-csharp">IDictionary<string, object> propertyValues = (IDictionary<string, object>)s;</code>
但是,此方法僅適用於 ExpandoObject
,不會推廣到其他動態物件類型。
處理一般動態物件
處理任意動態物件(超出ExpandoObject
)需要更複雜的方法。 這些通常涉及利用動態語言執行時間 (DLR) 和 IDynamicMetaObjectProvider
介面來動態檢索屬性值。 具體實現取決於所討論的動態物件的性質。
以上是如何從 .NET 中的動態物件檢索屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!