2011-06-17 19 views
9

Mam IList<AdminVAT> i chciałbym skopiować tę kolekcję do IList<AdminVATDto> kolekcjiAutoMapper: Copy IList <> do IList <>

Próbowałem to:

IList<AdminVAT> listAdminVAT = new AdministrationService(session).ListDecimal<AdminVAT>(); 
AutoMapper.Mapper.CreateMap<IList<AdminVAT>, List<AdminVATDTO>>(); 
var res = AutoMapper.Mapper.Map<IList<AdminVAT>, IList<AdminVATDTO>>(listAdminVAT); 

otrzymuję ten wyjątek:

Próba mapę System.Collections.Generic.IList`1 [[AdminVAT, eSIT.GC.DataModel, Version = 1.0.0.0 Kultura = neutralne TokenKluczaPublicznego = NULL]] do System.Collections.Generic.IList `1 [[AdminVATDTO, eSIT.GC.WebUI, Ver sion = 1.0.0.0, Culture = neutral, PublicKeyToken = null]].

Dzięki.

Update1

public class AdminVAT : IAdminDecimal 
{ 
    public virtual int Id { get; set; } 
    public virtual int Code { get; set; } 
    public virtual decimal Value { get; set; } 
} 
public class AdminVATDTO : AdminVAT 
{ 
    [DisplayFormat(DataFormatString = "{0:n2}", ApplyFormatInEditMode = true)] 
    public override decimal Value { get; set; } 
} 

mam jeszcze 5 po przecinku w moim liście rozwijanej ...

Kontroler:

IList<AdminVAT> listAdminVAT = new AdministrationService(session).ListDecimal<AdminVAT>(); 
AutoMapper.Mapper.CreateMap<AdminVAT, AdminVATDTO>(); 
model.ListVAT = AutoMapper.Mapper.Map<IList<AdminVAT>, IList<AdminVATDTO>>(listAdminVAT); 

HTML:

@Html.DropDownList("ddVAT", new SelectList(Model.ListVAT, "Id", "Value", Model.Estimation.AdminVAT)) 

Odpowiedz

19

Zdefiniuj mapowanie tylko między typów prostych, jak wyjaśniono w documentation:

AutoMapper.Mapper.CreateMap<AdminVAT, AdminVATDTO>(); 

Wtedy będziesz w stanie konwertować między listami, zbiorów, enumerables z tych typów:

IList<AdminVATDTO> res = AutoMapper.Mapper.Map<IList<AdminVAT>, IList<AdminVATDTO>>(listAdminVAT); 
+0

Próbowałem to myślę . Typ res to "IList , IList >", potrzebujemy IList

+0

@ Kris-I, musiałeś spróbować czegoś innego. Typ 'res' jak pokazano w moim przykładzie to' IList '. Zaktualizowałem swoją odpowiedź, aby uczynić to bardziej przejrzystym zamiast używania 'var'. –

+0

@Darin Masz rację, CodeRush, kiedy robię "zmienną Delcare" daj mi: IList , IList > –

Powiązane problemy