Vb.net 如何遍历ExpandooObject并获取特定值

Vb.net 如何遍历ExpandooObject并获取特定值,vb.net,dictionary,expandoobject,Vb.net,Dictionary,Expandoobject,我有以下XML (部分) 然而,我很难再深入下去了。 尝试了所有被注释掉的 'error For Each c In def.changes 'unable to cast 'error For Each member In CType(def.changes, IDictionary(Of String, Object)) 'Invalid cast 'error For Each c In def.change

我有以下XML (部分)

然而,我很难再深入下去了。 尝试了所有被注释掉的


'error For Each c In def.changes                    'unable to cast
'error For Each member In CType(def.changes, IDictionary(Of String, Object)) 'Invalid cast
'error For Each c In def.change                     'missing change
'error For Each c In def.changes.change             'missing change
'error For Each c In def.definition.changes.change  'missing definition
'error Console.WriteLine(def.changes.change(0).number)  'missing member
'Console.WriteLine(def.changes.changelist.numner)
For Each member In CType(def.changes, IDictionary(Of String, Object))
  Console.WriteLine(member.Key)
Next

这就是def变量的外观


任何指点都将不胜感激。具体地说,通过反复修改。

由@TnTinMn解决。使用了错误的外壳。这就是它的工作原理

    For Each change As Object In def.changes.changeList
      Console.WriteLine(change.number)
    Next

您正在根据成员名称进行后期绑定。因此,要在
def
中迭代更改列表:
对于def.changes.changeList
中作为对象的每个更改,@TnTinMn我现在知道哪里出错了。变更列表是大写的L。我想我已经试过你的例子,但一定是小写的L。谢谢你给我指明了正确的方向。

'error For Each c In def.changes                    'unable to cast
'error For Each member In CType(def.changes, IDictionary(Of String, Object)) 'Invalid cast
'error For Each c In def.change                     'missing change
'error For Each c In def.changes.change             'missing change
'error For Each c In def.definition.changes.change  'missing definition
'error Console.WriteLine(def.changes.change(0).number)  'missing member
'Console.WriteLine(def.changes.changelist.numner)
For Each member In CType(def.changes, IDictionary(Of String, Object))
  Console.WriteLine(member.Key)
Next

    For Each change As Object In def.changes.changeList
      Console.WriteLine(change.number)
    Next