2

私は次のように定義されたWebサービスを持っています:

<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 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 に答える