コレクションは、ネットワークを通過するときに単純化されます。IDE およびコマンドライン ( ) を介してコレクション タイプを指定できますが、API のすべてのsvcutil /collectionType
コレクションに適用されます。それを受け入れて、コードで不一致を処理する必要があると思います。最終的に、ネットワーク上では、コレクションは単なる xml です (少なくとも標準のバインディングでは) - 次のようなものです。
<items>
<item ...>...</item>
<item ...>...</item>
<item ...>...</item>
</items>
T[]
- したがって、配列 ( )、 a List<T>
、 a HashSet<T>
、および aの間で (スキーマから) 判断できない理由MyFunkyCollection<T>
。
アセンブリ共有を使用する場合 (つまり、同じサービス コントラクト アセンブリがクライアントとサーバーにある場合)、これは発生しませんが、SOA/mex の意図に反することに注意してください。しかし、これはかなり頻繁に使用されるアプローチです。したがって、IDE は直接サポートしており、スイッチ ( svcutil /reference
) を介したコマンドラインもサポートしています。
それをサポートする IDE の場合... サービス コントラクトとデータ コントラクトをクラス ライブラリ (dll) に記述し、アセンブリ参照 (つまり、dll 参照またはプロジェクト参照) を 2 つのプロジェクト (サーバー プロジェクトとクライアント プロジェクト)。ここで、クライアント プロジェクトからサーバー エンドポイント (.svc) へのサービス参照を追加します。VS2008 を使用している場合、型のローカル参照が自動的にチェックされ、プロキシ生成の代わりにそれらが使用されます。つまり、クライアント コードは、使用するIwcfServerSync
かどうかを既に認識しているクラス ライブラリの を使用しますHashSet<T>
。