0

私はさまざまなオブジェクト タイプ (約 15 の異なるタイプ) の配列を持っています。それらはサード パーティ システムからのものです。タイプごとに、異なる変換を行う必要があります。私の当初の考えは、変換関数を使用していくつかのインターフェイスを作成し、すべてのタイプに対してクラスを作成して独自の実装を実行することです。しかし、このように、オブジェクト タイプをチェックしてマッピングを行う非常に大きな if ステートメントを作成する必要があります。

私はここで何か新しいことを学ぼうとしているので、この状況に対処する他の方法はありますか?

4

3 に答える 3

2

Visitorを使用する可能性を検討しましたか?

ビジター パターンを の使用と組み合わせると、orステートメントを使用せずに、またはデリゲートを使用して手動でタイプ ディクショナリを作成する必要がdynamicなく、非常に単純な実装を得ることができます。ifswitch

you を使用すると、デザイン パターンの「 acceptdynamic 」部分の実装を回避できます。これは、制御できない外部型であるため、便利だと思います。

つまり、次のようなものを作成します。

public interface IVisitor
    {
        void Visit(OneType element);
        void Visit(AnotherType element);
        ....
    }

そのビジターを実装し、後で以下を使用して実装を呼び出すことができます。

visitor.Visit((dynamic)objectToTransform);

に適切なオーバーロードがないことに関する例外を処理する必要があるでしょうType

これにより、タイプごとに個別のメソッドを実行することに関連する問題の一部が解決されます。それぞれで具体的に何をする必要があるかにもよりますが、自動プロパティ マッピングが必要な場合は、AutoMapperが非常に便利です。

于 2012-07-11T06:46:53.780 に答える
0

これがあなたの望むものかどうかはわかりませんが、AutoMapper (または別のマッパー) を見てください。型を他の型にマップするルールを簡単に定義できます。

于 2012-07-11T06:41:34.387 に答える
0

Java フロント コントローラー パターンと同様に、型と変換のルックアップを作成できます。

于 2012-07-11T06:40:20.693 に答える