在花了很多时间试图弄清楚这里发生了什么之后,我终于发现 Yodlee 生成的 WDSL 文件或 WSDL.exe 解释 WSDL 文件的方式有问题。
它的实际原因是因为 WSDL 似乎没有指示 ItemData1.Accounts 下返回什么类型,这是因为它可以是 BankData 或 CardData,因为 VisualStudio 不知道期望什么类型,它 de-将对象序列化为 XML 节点。
我设法解决这个问题的方法是,当您使用 WSDL.exe 生成 yodleeProxies.vb 文件时,您需要进入生成的文件,然后找到 ItemData1 类的定义
Partial Public Class ItemData1
你需要改变
Public Property accounts As Object()
到
Public Property accounts As BankData()
然后它知道该对象将是 BankData 类型
我还添加了一个需要 CardData 的新属性,以便 CardData 将出现在该属性下,并且会正确反序列化
Public Property accounts2 As CardData()
Get
Return Me.accountsField
End Get
Set(value As CardData())
Me.accountsField = value
End Set
End Property
这就是我如何解决这个问题的技巧,如果其他人找到了一种更优雅的解决方法,请告诉我。