如何使用dynamic关键字从COM对象获取属性

我有一个从第三方API返回的COM对象。 这个COM对象上有一个属性,它有一堆关于该对象的系统信息……返回的属性是“System.Object”类型。

调试这个COM对象时,我看到了我感兴趣的属性,并且Visual Studio调试器(2012)将动态视图附加到该对象,允许我看到它是一个像字典这样的对象的数组……

我能够硬编码一些动态关键字用法来提取我关心的这个对象的值,如下所示:

var temp = ((dynamic)myObject.someProperty)[11].ValueString; 

虽然这有效,但显然有更好的方法,因为Visual Studio调试器能够动态枚举和显示该对象的内容……

如何在C#中实现相同的function,最好不使用任何互操作方法,并使用动态关键字?

我找到了一种方法:

  var myObject = ((dynamic)comObject.someProperty); foreach (var index in myObject) { // This will loop over each object in the array } 

Visual Studio的调试器使用reflection来枚举任何类型的对象的字段和属性。

Type.GetProperties