私の最初の質問なので、それが適切であることを願っています:
共有インターフェイス アセンブリ- インターフェイスを持つ「共有」アセンブリがあります。それを と呼びましょうIDocRepository
。でマークされており、 でマークされたメソッド[ServiceContract]
がいくつかあります。[OperationContract]
WCF 実装アセンブリ- 2 つの WCF サービス プロジェクトがあり、それぞれが共有アセンブリを参照し、それぞれがそのインターフェイスを WCF サービスとして実装しています。
コンシューマ アセンブリ- 最後に、2 つの WCF サービスのそれぞれを参照する共有アセンブリを参照する「クライアント」プロジェクトがあります。
ただし、コンシューマ アセンブリで生成されるサービス参照は、自動生成されたバージョンのインターフェイスから派生します。
public partial class ExampleClient : System.ServiceModel.ClientBase<SomeNamespace.ExampleSvcRef.IDocRepository>, SomeNamespace.ExampleSvcRef.IDocRepository {
私
が期待していたのは、両方の参照が代わりに定義したインターフェイスを自動的に継承し、コンシューマー/クライアント アセンブリも参照していることです。パラメーターと戻り値の型に提供されるクラスの再利用のようなものですが、サービス インターフェイス用です。
どちら
かのサービス参照プロキシのインスタンスを作成し、それをインターフェイス タイプにキャストできるようにするためです。
そのため、生成されたコードを毎回手動で変更できますが、もっと良い方法があるはずです...?
(編集:両方のサービス参照に対して「参照されたアセンブリでタイプを再利用する」オプションと「すべての参照されたアセンブリでタイプを再利用する」オプションが選択されています)