0

このwsdlを使用してクラスを生成しています。

https://pal-live.adyen.com/pal/Payment.wsdl

これを「Web参照」として追加すると、支払いを行うために必要なメソッドを含むPaymentクラスが作成されます。

これを「サービス参照」として追加すると、これらのメソッドを使用したインターフェースのみが作成され、Paymentクラスは作成されません。

他のクラスもありますが、重要なPaymentクラスが欠落しており、そのメソッドはインターフェイスにのみ存在します。

wsdlはどのようにして異なるクラスを生成できますか?ここでの主な違いは何ですか?この支払いクラスを取得するにはどうすればよいですか?

また、Web参照を使用できない理由は、このコードがAzure Webサイトにデプロイされており、Web参照で生成されたコードをプッシュするとSDKバージョンエラーが発生するためです。おそらく.netバージョンが原因です。

ありがとう

4

1 に答える 1

1

svcutilを使用して、wsdlに基づいてクラスを生成しました。

インターフェースを作成しましたPaymentPortType。これは、サービスとの通信方法の契約を定義します。ただし、これはサービスがどこにあるかを知りません。

また、クラスを作成しましたPaymentPortTypeClient。このクラスはから継承しClientBase<PaymentPortType>ます。PaymentPortTypeClientにBindingとEndpointAddressを与えることで、サービスと通信するために必要なすべてのものを手に入れることができます。

注:これは構成ファイルから取得できます。その時点で、コンストラクターを使用します。

public PaymentPortTypeClient(string endpointConfigurationName)

ClientBaseにはプライベートChannelFactoryがあります。ChannelFactory.CreateChannel()は、PaymentPortTypeを実装し、サービスと通信できるオブジェクトを作成します。これは自動的に行われ、ClientBase.Channelに保存されます。

最後に、PaymentPortTypeClientPaymentPortTypeも実装します。インターフェイスの各メソッドは、チャネルでそのメソッドを呼び出すために実装されます。

于 2012-08-17T17:12:02.857 に答える