我的WebService定义如下:
<WebMethod(Description:="Retrieve a list of account profiles.")> _
<System.Web.Services.Protocols.SoapHeader("MyHeader")> _
Public Function RetrieveAccountProfile(<XmlElement(IsNullable:=True, Type:=GetType(WSRetrieveAccountProfile))> ByVal myAccount As WSRetrieveAccountProfile) As <XmlElement(IsNullable:=True)> WSResponseRetrieveAccountProfile
...
我作为输入参数WSRetrieveAccountProfile
传递的类定义如下:
<Serializable()> _
<XmlType(Namespace:="http://mynamespace/", TypeName:="WSRetrieveAccountProfile")> _
Public Class WSRetrieveAccountProfile
<XmlElement(IsNullable:=False)> Public accountNumber As List(Of Integer)
Public Sub New()
End Sub
Public Function Validate() As Boolean
'Validations here
Return True
End Function
End Class
问题:我使用Web服务,我正在客户端工作,我正在尝试声明类型为WSRetrieveAccountProfile
的对象,因此我可以在调用Web服务时将其作为输入参数传递,但我得到编译错误 - 它无法识别类型。
检查Reference.vb后,我注意到该函数的输入参数是一个整数ByVal myAccount() As Integer
的普通数组。现在,如果我在WSRetrieveAccountProfile
类定义中添加另一个变量,ByVal myAccount() As Integer
突然变为ByVal myAccount As WSRetrieveAccountProfile
,问题就解决了。
如何在不添加不必要变量的情况下解决此问题?我尝试使用XmlType属性没有运气。
*更新* 这个定义有效:
<Serializable()> _
<XmlType(Namespace:="http://mynamespace/", TypeName:="WSRetrieveAccountProfile")> _
Public Class WSRetrieveAccountProfile
<XmlElement(IsNullable:=False)> Public accountNumber As List(Of Integer)
<XmlElement(IsNullable:=True)> Public TEST As String
Public Sub New()
End Sub
Public Function Validate() As Boolean
'Validations here
Return True
End Function
End Class
*更新 - 解决方案*
如果我改变了
<XmlElement(IsNullable:=False)> Public accountNumber As List(Of Integer)
至
<XmlArray(IsNullable:=True)> Public accountNumber As List(Of Integer)
然后正确生成代理,我不再有问题。
答案 0 :(得分:1)
更改
<XmlElement(IsNullable:=False)> Public accountNumber As List(Of Integer)
到
<XmlArray(IsNullable:=True)> Public accountNumber As List(Of Integer)
修复代理生成。