2012-01-17 4 views
6

일치하지 않는 방법의 구현 몸의 서명과 선언 :Automapper은 IList -이 매핑 내 응용 계층에서 정의한

public IList<ProfessionDTO> GetAllProfessions() 
{ 
    IList<Profession> professions = _professionRepository.GetAll(); 
    Mapper.CreateMap<Profession, ProfessionDTO>(); 
    Mapper.CreateMap<IList<Profession>, IList<ProfessionDTO>>(); 
    IList<ProfessionDTO> professionsDto = Mapper.Map<IList<Profession>, IList<ProfessionDTO>>(professions); 
    return professionsDto; 
} 

팔라 딘이나 마법사와는 다른 용병 엔티티

public class Profession 
    { 
     private int _id; 
     private string _name; 


     private Profession(){} // required by nHibernate 

     public Profession(int id, string name) 
     { 
      ParameterValidator.NotNull(id, "id is required."); 
      ParameterValidator.NotNull(name, "name is required."); 
      _id = id; 
      _name = name; 
     } 

     public string Name 
     { 
      get { return _name; } 
     } 

     public int Id 
     { 
      get { return _id; } 
     } 
    } 

직업 DTO :

public class ProfessionDTO 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 
메소드 구현 몸과 선언의

서명이 일치하지 않는 : 0

GetAllProfessions을 실행 나는이 오류가 발생합니다.

왜 그런가?

나는 모든 IList를 List로 변경했습니다. 지금 예외는 없지만 검색된 직업의 27 개 엔티티 목록은 ProfessionDTO의 0으로 매핑됩니다.

답변

12

나는 내 자신의 질문에 어리석게 대답합니다.

Mapper.CreateMap<IList<Profession>, IList<ProfessionDTO>>(); 

지금 Auomapper가 완벽하게 작동합니다 :

나는이 줄을 필요가 없습니다!

+2

+1 자신의 질문에 대답 해 주셔서 감사합니다! – HitLikeAHammer

0

전문 직업 클래스의 ID 및 이름 속성에 대한 설정자가 없습니다.

+0

중요하지 않습니다. 전문 직업인이 원천입니다. 세터는 결코 사용되지 않습니다. –

+0

그래, 알아,하지만 그 속성 사이에 다른 볼 수있는 유일한 것입니다 .. – JoJa

0

답변이 잘못되었습니다. 올바른 것이 맞아야합니다.

Mapper.CreateMap<Profession, ProfessionDTO>();