1 つのプロジェクトで WCF サービスにアクセスするためのクライアントを作成し、サービスで動作するすべてのクラスはこのクラスから継承します。
public abstract class ServiceClient<TServiceClient> : IDisposable where TServiceClient : ICommunicationObject
このクラスでは、破棄、クライアントが呼び出されたときのログ記録などを行います。すべてのサービス クラスが通常行う一般的な処理です。
これを古いシステムに実装するタスクを取得するまで、すべてがうまくいきました。このプロジェクト (DLL) を参照できない別のプロジェクトで使用したときに問題が発生しました (これはSystem.ServiceModel
私がまだ維持している古い .NET 2.0 ソフトウェアであり、3.0 にアップグレードすることは問題外であるため)。ここで、省略where TServiceClient : ICommunicationObject
した場合、プロジェクトはビルドできますが、ServiceClient
使用できません。たとえば、client.Close()
またはclient.State
それで、where
ステートメントを削除してサービスクラスを書き直す唯一の解決策はありますか?