在 .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中文网其他相关文章!