2017-12-06 9 views
0

私はそれが私の最初の言語ではないので、英語でこれを記述するのが難しいと思うので、質問/タイトルが合理的であることを願っています。メソッドの戻り値の型が指定されていないインターフェイスを作成できますか?

実装で任意の型を返すことができるメソッドでインターフェイスを作成できるかどうかを知る必要があります。

別のクラスに注入できるジェネリックマッパーを作りたいと思います。しかし、私がジェネリックマッパーを作ることができるのか、あるいは異なるタイプのために異なるインターフェースを作る必要があるかどうかは疑問です。同じことをするが異なる戻り値の型しか持たない異なるインターフェースを作るのは無意味だと思われます。このようなの

ソート:

public interface IMapper() 
{ 
    T MapObject() where T = the return type 
    List<T> MapList() where T = the return type; 
} 

public class OrderMapper : IMapper() 
{ 
    OrderDetails MapObject() 
    { 
     mapping code... 
     return OrderDetails; 
    } 
} 

public class CustomerMapper : IMapper() 
{ 
    CustomerDetails MapObject() 
    { 
     mapping code... 
     return CustomerDetails; 
    } 
} 

は、これは行うことは可能ですか?それとも、私は鈍いだけで、私は別のインターフェースを作る必要がありますか?

+1

@ViRuSTriNiTyあなたがタイトルを編集するときは、([このメタ質問]あなたがチェックしていることを確認してくださいhttps://meta.stackexchange.com/questions/19190/タグをタイトルに含めるべきかどうかについては、質問の対象となるタグを含めてください)。 – nvoigt

答えて

5

Genericsはあなたが必要とする正確に何です:

public interface IMapper<T> 
{ 
    T MapObject(); 
    List<T> MapList(); 
} 

public class OrderMapper : IMapper<OrderDetails> 
{ 
    public OrderDetails MapObject() 
    { 
     // mapping code... 

     return new OrderDetails(); 
    } 

    public List<OrderDetails> MapList() 
    { 
     throw new NotImplementedException(); 
    } 
} 

public class CustomerMapper : IMapper<CustomerDetails> 
{ 
    public CustomerDetails MapObject() 
    { 
     // mapping code... 

     return new CustomerDetails()); 
    } 

    public List<CustomerDetails> MapList() 
    { 
     throw new NotImplementedException(); 
    } 
} 
+1

ああ、あなたは私にそれを打つ:)まったく同じコードと参照のリンク! – Flater

+0

ありがとう、これは私が必要としていたものです! – ciyan97

関連する問題