我有一个 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 后,我注意到该函数的输入参数是 Integer 的普通数组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)
然后代理正确生成,我不再有问题。