2017-12-06 11 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/을 확인 있는지 확인하십시오 제목에 should-questions-include-tags-in-their-titles)을 추가해야합니다. – 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