2012-01-17 10 views
6

ho questa mappatura definita nel mio Application Layer:Automapper IList - Firma del corpo e la dichiarazione in un'implementazione del metodo non corrispondono

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; 
} 

Proffesion entità

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; } 
     } 
    } 

Professione DTO :

public class ProfessionDTO 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

Quando si esegue GetAllProfessions ottengo questo errore:

Firma del corpo e la dichiarazione in un'implementazione del metodo non corrispondono.

Qualche idea sul perché sta succedendo?

Ho appena cambiato tutto il IList in List. Non ottengo l'eccezione ora ma l'Elenco delle 27 entità della professione che viene richiamato è mappato a 0 di ProfessionDTO.

risposta

12

Mi sento sciocco rispondendo alla mia stessa domanda.

Non ho bisogno di questa linea:

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

Ora Auomapper funziona perfettamente!

+2

+1 Grazie per aver risposto alla tua stessa domanda! – HitLikeAHammer

0

non hai setter per il tuo attributo Id e Nome nella tua classe di professione.

+0

Non dovrebbe avere importanza. L'entità della professione è la fonte. I setter non vengono mai usati. –

+0

Sì, lo so, ma è l'unica cosa che vedo diverso tra queste proprietà .. – JoJa

0

La risposta indicata sembra errata; Corretto si dovrebbe essere come;

Mapper.CreateMap<Profession, ProfessionDTO>(); 
Problemi correlati