0

WSDL ドキュメントがあり、上記のような要素が含まれています。

  <s:element name="NewPortalOrder">
    <s:complexType>
      <s:sequence>
        <s:element minOccurs="1" maxOccurs="1" name="OrderType" type="tns:CardSalesType" />
        <s:element minOccurs="1" maxOccurs="1" name="Customer" type="tns:PortalCustomerContainer" />
        <s:element minOccurs="1" maxOccurs="1" name="InvoiceAddress" type="tns:AddressContainer" />
        <s:element minOccurs="1" maxOccurs="1" name="DeliveryAddress" type="tns:AddressContainer" />
        <s:element minOccurs="0" maxOccurs="1" name="Cards" type="tns:ArrayOfPortalCardContainer" />
      </s:sequence>
    </s:complexType>
  </s:element>

WSDL ファイルを ServiceReference としてソリューションに追加しました。

サーバー側

  WS.NewPortalOrderRequest order = new WS.NewPortalOrderRequest();

  order.InvoiceAddress.AddressLine1 = txtAddress.Text;
  order.InvoiceAddress.AddressLine2 = txtAddress2.Text;

order.InvoiceAddress.AddressLine1 = txtAddress.Text;行でエラーObject reference not set to an instance of an object.が発生します。

を見るとorder.InvoiceAddress、それが null であることがわかります。なぜこのエラーが発生するのですか? どうすれば解決できますか?

4

1 に答える 1

3

ほとんどの場合、次のようInvoiceAddressにのインスタンスを作成する必要があります。NewPortalOrderRequest

WS.NewPortalOrderRequest order = new WS.NewPortalOrderRequest();

order.InvoiceAddress = new WS.InvoiceAddress();

// Now you can assign values to InvoiceAddress' property:
order.InvoiceAddress.AddressLine1 = txtAddress.Text;
order.InvoiceAddress.AddressLine2 = txtAddress2.Text;

order.InvoiceAddress = new WS.AddressContainer()WSDL に基づいて行う必要があるかもしれませんが、それについて 100% 確信があるわけではありません。

于 2013-04-30T08:14:07.680 に答える