我有从第三方API返回的COM对象。这个COM对象上有一个属性,它有一堆关于该对象的系统信息......返回的属性是“System.Object”类型。
调试这个COM对象时,我看到了我感兴趣的属性,并且Visual Studio调试器(2012)将动态视图附加到该对象,这使我可以看到它是一个像字典这样的对象的数组。 ..
我能够对一些动态关键字用法进行硬编码以从我关心的对象中提取值,如下所示:
var temp = ((dynamic)myObject.someProperty)[11].ValueString;
虽然这有效,但显然有更好的方法,因为Visual Studio调试器能够动态枚举和显示该对象的内容......
如何在C#中实现相同的功能,最好不使用任何互操作方法,以及使用动态关键字?
答案 0 :(得分:2)
我找到了一种方法:
var myObject = ((dynamic)comObject.someProperty);
foreach (var index in myObject)
{
// This will loop over each object in the array
}
答案 1 :(得分:-1)
Visual Studio的调试器使用反射来枚举任何类型对象的字段和属性。