2011-08-15 22 views
1

私はある種の「工場」設計パターンを使用してかなり複雑なアプリケーションを作成しました。そのように、私はクラスを定義するインターフェイスを持って、私はクラスをインターフェイスを実装していると私はインスタンスを作成するための静的メソッドを持つ静的クラスを持っています。その静的メソッド(ファクトリメソッド)はインターフェイス型を返し、ファクトリクラスだけが自分の型クラスにアクセスできます。 私はプライベートクラスAを持っているので、パブリックインターフェイスIAと静的ファクトリクラスFactoryを持っています。 "Factory"クラスは "A"にアクセスできる唯一のクラスであり、 "IA"型を返します。 そのようにして、プロジェクト全体がインターフェイス(たとえば "IA")を使用して作業しており、インターフェイスを引数として渡しています。簡単に言えば、私のアプリケーションは、工場クラス以外ではクラス "A"を使用していません。WCFと工場設計パターン

今、難しい部分は - 私はクライアントとサーバーの部分に私のアプリを分割することを決めた。これらの部品はWCFを使用して通信します。しかし、私は問題があります - WCFで私は私が全面的にコード通りに行ったように、戻り値の型/引数としてインターフェイスを使用することはできません。

ありがとうございますANY私の "know-only-interface"コードの根底を変えずにプロジェクトを動作させる方法はありますか?

+0

あなたのWCF使用のコード例がありますか? –

+0

私は1つのソリューションの中に3つのプロジェクトがあるので、それほど複雑ではないでしょう:\ Oneプロジェクトはクライアントコード(Mostyleユーザーインターフェイス)です、もう1つはクライアントとwcfによって共有されるタイプのClassLib、そして3つ目のプロジェクトはwcfサービスライブラリ... – guest86

答えて

1

インターフェイスIAと同じプロパティを持つクラスを作成します。サービス操作の戻り値の型をこのクラスの型として指定できます。サービス操作では、このクラスのオブジェクト(DTO)を登録し、タイプIAのオブジェクトから値をマップします。今すぐこのDTOを返すことができます。

+0

申し訳ありません、 "DTO"はforrrの略ですか? :) – guest86

+0

データ転送オブジェクト。それはダムオブジェクト(動作なし)であり、アプリケーション層/ティア間でオブジェクトの状態を転送するためだけに使用されます。 –

+0

私はそれを聞いたことがない、有望な音... – guest86

関連する問題