我有一个继承自IDynamicMetaObjectProvider
的对象。当我在Visual Studio中进行调试时,Watch窗口会显示" Dynamic View"这需要扩大评估。
如何在代码中执行相同的操作 - 如何获取动态myThing
并从中获取包含myThing
中所有动态属性/值的对象或字典?
答案 0 :(得分:1)
如果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
}