0

この質問のフォローアップとして:
Is a bad practice to Return different types when overloading a method?

私が使用している非常に単純なマッパーインターフェースについて考えています:

public interface IMap<T,U>
{
    U MapFrom(T obj);
    T MapFrom(U obj);
}

これはおそらく、指摘された質問の議論のより的を絞った例です。このインターフェースを実装するインスタンスは、タイプ間でマップするだけです。
私はこのようにすることができます:

public interface IMap<T,U>
{
    U MapRight(T obj);
    T MapLeft(U obj);
}

しかし、それはばかげているように思えます。なぜなら、概念的には、tofromの概念は、ここにある私の汎用マッパーには実際には当てはまらないからです。ただの双方向マップです。それで、リンクされた質問を補完するために:
Is this general map bad practice?

インターフェイスの「ジェネリック性」を損なうことなく、異なる型を返さないようにするには、どのようにメソッドに名前を付ける必要がありますか?

編集:また、回答に応じて、これマッパー用です(実際に関連しているわけではありません)。インターフェイスにマッピングメソッドを含めないだけです。

EDIT2:単方向マッパー(またはアダプター)があり、2方向に2回実装した場合、同じ質問が当てはまると思います...同じメソッド名、異なる戻り値の型。

4

2 に答える 2

1

T と U が同じ型にならないように制限する方法がないため、これは難しいことです。したがって、それらが同じ型になるリスクが常にあります。次のように、一緒に暮らすことができる2つの名前を見つけるだけでよいと思います。

  • マップファースト
  • 地図秒

または:

  • 地図
  • リバースマップ

または:

  • 前方
  • 逆行する
于 2011-05-10T17:59:57.793 に答える