AutoMapper: скопировать IList <> в IList <> - PullRequest
9 голосов
/ 17 июня 2011

У меня есть IList<AdminVAT>, и я хотел бы скопировать эту коллекцию в IList<AdminVATDto> коллекцию

Я пробовал это:

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

Я получаю это исключение:

Попытка сопоставить System.Collections.Generic.IList`1 [[AdminVAT, eSIT.GC.DataModel, версия = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null]] с System.Collections.Generic.IList`1 [[AdminVATDTO, eSIT.GC.WebUI, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = ноль]].

Спасибо.

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

У меня все еще есть 5 десятичных в моем выпадающем списке ...

Контроллер:

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))

1 Ответ

19 голосов
/ 17 июня 2011

Определите отображение только между простыми типами, как описано в документации :

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

Затем вы сможете преобразовывать списки, коллекции, перечислимые типы этих типов:

IList<AdminVATDTO> res = AutoMapper.Mapper.Map<IList<AdminVAT>, IList<AdminVATDTO>>(listAdminVAT);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...