2

我有一个 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 IntegerWSRetrieveAccountProfile现在,如果我在类定义中添加另一个变量,则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)

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

4

1 回答 1

1

改变

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

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

修复代理生成。

于 2012-09-26T18:41:14.130 回答