1

問題:

非常によく似た 2 つ (またはそれ以上) のクラスがあります。あるクラスのプロパティは、他のクラスのプロパティのサブセットです。より具体的には、プロパティ名とセマンティクスは同じですが、それらの型は必ずしも同じではありません。ただし、同じ名前のプロパティの型が異なる場合、これらの型は(同じ意味で)非常に似ています。

同様のクラスのすべてのセットに共通のインターフェイスを派生させて、異なるクラスのインスタンスを同じ方法で使用できるようにしたいと考えています。

私のクラスには 100 を超えるプロパティがあるため、可能であればインターフェイスを手動で作成することは避けたいと考えています。

インターフェイスは、すべての類似クラスのすべてのプロパティ セットの結合を包含する必要があります。(特定のオブジェクトに存在しないプロパティが読み取られると、null返される必要があります。そのような未定義のプロパティが設定されている場合、何も起こらないはずです。)したがって、インターフェイスはもはや適切ではなく、むしろラッパーであると思いますクラスか何か違う...

環境:

WCF を使用して Web サービス ( CreateSalesOrder ) を使用しています。サービスの入力メッセージには、 Request_ItemRequest_ShipToLocationなどの他の XSD タイプの子で構成されるXML スキーマ タイプRequest_SalesOrderの要素が必要です。

出力メッセージには、スキーマ タイプResponse_SalesOrderの要素が含まれます。これには、スキーマ タイプResponse_ItemResponse_ShipToLocationなどの同様の子要素と、タイプResponse_PriceTotal の要素PriceTotalなど、いくつかの追加要素があります。

ASP.Net MVC を使用して、Web サービスを使用するための UI を構築したいと考えています。したがって、販売注文を作成するためのフォームをレンダリングするビューがあります。Web サービス要求を送信した後、フォーム フィールドを Web サービス応答メッセージからの値で更新する必要があります。

フォーム フィールドは、プロキシ クラスのプロパティにアクセスするビュー モデルにバインドされます。フォームが送信されると、ビュー モデルはプロキシ クラス A のインスタンスを更新する必要がありますが、フォームが応答メッセージの値でレンダリングされる場合、ビュー モデルはプロキシ クラス B のインスタンスから読み取ります。

4

1 に答える 1

0

私はあなたがAdpaterデザインパターンについて話していると思いますが、インターフェースを手動で書くことを避ける方法がわかりません: http://en.wikipedia.org/wiki/Adapter_pattern

于 2010-11-04T09:16:01.733 に答える