【问题标题】:AutoMapper : Copy IList<> to IList<>AutoMapper:将 IList<> 复制到 IList<>
【发布时间】:2011-09-17 02:42:57
【问题描述】:

我有一个IList&lt;AdminVAT&gt;,我想将此收藏复制到IList&lt;AdminVATDto&gt; 收藏

我试过了:

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, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] 映射到 System.Collections.Generic.IList`1 [[AdminVATDTO,eSIT.GC.WebUI,版本=1.0.0.0,文化=中性,PublicKeyToken=null]]。

谢谢。

更新1

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

【问题讨论】:

    标签: c# automapper


    【解决方案1】:

    仅定义简单类型之间的映射,如documentation 中所述:

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

    然后您将能够在这些类型的列表、集合、枚举之间进行转换:

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

    【讨论】:

    • 我想我试过这个。 res的类型是“IList,IList>”,需要IList
    • @Kris-I,您一定尝试过其他方法。如我的示例所示,res 的类型是IList&lt;AdminVATDTO&gt;。我已经更新了我的答案以使其更清楚,而不是使用var
    • @Darin 你是对的,CodeRush 当我执行“Delcare 变量”时给我:IList, IList>
    • @Darin,这个 MVC 仍然有问题,请参阅更新 1(即将推出)
    • @Kris-I,这是一个完全不同的问题。也许最好关闭这个线程并提出一个新问题。我只能告诉你,你错误地使用了 AutoMapper。它不应该在从另一个派生的对象之间像这样使用。使用 AutoMapper 在没有继承的类型之间进行映射。为什么AdminVATDTO 派生自AdminVAT?这 AdminVATDTO 实际上应该是一个视图模型吗?似乎是这样,因为我看到您正在尝试对其使用某些格式。如果是,则绝对不应从您的模型派生,而是定义一个单独的类。
    猜你喜欢
    • 2010-11-30
    • 2020-05-17
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多