问题:访问 .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中文网其他相关文章!