带有输入类参数的Web服务将其转换为数组

时间:2012-09-26 17:41:35

标签: vb.net web-services

我的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)

然后正确生成代理,我不再有问题。

1 个答案:

答案 0 :(得分:1)

更改

<XmlElement(IsNullable:=False)> Public accountNumber As List(Of Integer)

<XmlArray(IsNullable:=True)> Public accountNumber As List(Of Integer)

修复代理生成。