评估动态属性
本文关键字:属性 动态 评估 | 更新日期: 2023-09-27 18:35:28
我有一个继承自IDynamicMetaObjectProvider
的对象。当我在 Visual Studio 中调试时,"监视"窗口显示"动态视图",需要展开才能进行评估。
如何在代码中做同样的事情 - 如何获取动态myThing
并从中获取包含myThing
中所有动态属性/值的对象或字典?
如果
IDynamicMetaObjectProvider
实现可以提供动态成员名称,则可以获取它们。
它适用于ExpandoObjects
和DynamicObjects
以及任何其他提供实现元对象的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
}