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