评估动态属性

本文关键字:属性 动态 评估 | 更新日期: 2023-09-27 18:35:28

我有一个继承自IDynamicMetaObjectProvider的对象。当我在 Visual Studio 中调试时,"监视"窗口显示"动态视图",需要展开才能进行评估。

如何在代码中做同样的事情 - 如何获取动态myThing并从中获取包含myThing中所有动态属性/值的对象或字典?

评估动态属性

如果

IDynamicMetaObjectProvider实现可以提供动态成员名称,则可以获取它们。

它适用于ExpandoObjectsDynamicObjects以及任何其他提供实现元对象的IDynamicMetaObjectProvider GetDynamicMemberNames() .

试试这个:

var properties = new List<string>();
dynamic dynObject = new ExpandoObject();
dynObject.Prop1 = "property value 1";
dynObject.Prop2 = "property value 2";
var provider = dynObject as IDynamicMetaObjectProvider;
if (provider != null)
    properties.AddRange(provider.GetMetaObject(Expression.Constant(dynObject)).GetDynamicMemberNames());
foreach (var prop in properties)
{
    //do something
}