0

ユーザーがネットワーク内のマシンで実行されている 1 つ以上の WCF サービスに接続するアプリケーションがあります。インストール時にはこれらの接続のアドレスがわからないため、アプリケーションはこれらのサービスにプログラムで接続する必要があります (つまり、[サービス参照の追加] を使用できません)。次のコードを使用して接続が機能しています。

string url = "...the url...";
BasicHttpBinding binding = new BasicHttpBinding();            
EndpointAddress address = new EndpointAddress(url);
ILicenseService service = ChannelFactory<ILicenseService>.CreateChannel(binding, address);

ただし、サービス クラスの一部のメンバーはObservableCollectionof 要素を返します。[詳細設定] を使用して、[サービス参照] ダイアログ ボックスでコレクション タイプを変更する方法を知っています。ObservableCollectionただし、クライアントが戻り値の型をList ではなくとして読み取ることを認識できるように、この値をプログラムで設定する方法がわかりません。手がかりはありますか?

4

1 に答える 1

0

サービス クラスのインターフェイスで定義されている型、またはシリアル化されたオブジェクトのプロパティの型に逆シリアル化する必要があります。インターフェイス/クラスのコレクション タイプを変更してみてください。

ところで、あなたはAdd service referenceコンパイル時にサービス エンドポイントのアドレスがわからないので使用できないと述べましたが、だからといって使用を止めるべきではありません。WSDL のコピーを取得し、ローカルの WSDL ファイルからインポートします。次に、サービス プロキシを作成するときに、ここAdd service referenceに示すように実際のエンドポイント アドレスを指定します。

于 2013-05-14T18:48:29.783 に答える