0
我有一个继承自IDynamicMetaObjectProvider
的对象。当我在Visual Studio中进行调试时,Watch窗口显示需要扩展才能评估的“Dynamic View”。评估动态属性
我该如何在代码中做同样的事情 - 我如何获取动态myThing
并从中获取包含myThing
中所有动态属性/值的对象或字典?
我有一个继承自IDynamicMetaObjectProvider
的对象。当我在Visual Studio中进行调试时,Watch窗口显示需要扩展才能评估的“Dynamic View”。评估动态属性
我该如何在代码中做同样的事情 - 我如何获取动态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
}
啊,所以我必须枚举通过'GetDynamicMemberNames'属性即可。嗯,我希望在.NET的某个地方有一些扩展方法,它只会给我整个对象作为匿名'对象'。 – core