0

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ステートメントを削除してサービスクラスを書き直す唯一の解決策はありますか?

4

2 に答える 2

1

If you can't upgrade that project to 3.0, this (or a wrapper class) seems to be your only option.

于 2010-06-14T13:50:51.450 に答える
0

アップグレードを妨げているものは何ですか? 3.0 は実際にはフレームワークの新しいバージョンではなく、追加の dll にすぎません。2.0 コードは、同じ .net ライブラリを使用して以前と同じように実行されます。

于 2010-06-14T13:55:23.400 に答える