2012-02-22 59 views
12

我有兩個類是下面, 映射必須是這樣的 ID->標識 名稱 - >文本 ImageName - > ImagePath的 頁面 - PageUIsAutomapper嵌套子列表

我怎麼能做到這一點使用Automapper?

public class Module 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string ImageName { get; set; } 
     public virtual ICollection<Page> Pages { get; set; } 
    } 

    public class ModuleUI 
    { 

     public int Id { get; set; } 
     public string Text { get; set; } 
     public string ImagePath { get; set; } 
     public List<PageUI> PageUIs{ get; set; } 
    } 
+1

沒有AutoMapper你可以寫:'新ModuleUI {ID = module.Id, ImagePath = module.ImageName,PageUIs = new List (module.Pages.Cast ())};' – brgerner 2012-02-22 12:48:45

回答

33

您可以使用ForMemberMapFromdocumentation)。
你映射配置可能是:

Mapper.CreateMap<Module, ModuleUI>() 
    .ForMember(s => s.Text, c => c.MapFrom(m => m.Name)) 
    .ForMember(s => s.ImagePath, c => c.MapFrom(m => m.ImageName)) 
    .ForMember(s => s.PageUIs, c => c.MapFrom(m => m.Pages)); 
Mapper.CreateMap<Page, PageUI>(); 

用法:

var dest = Mapper.Map<ModuleUI>(new Module 
            { 
             Name = "sds", 
             Id = 2, 
             ImageName = "sds", 
             Pages = new List<Page> 
                { 
                 new Page(), 
                 new Page() 
                } 
            }); 

結果:

enter image description here

+1

優秀!我從這裏得到了解決方案。我的投票+1 – imdadhusen 2015-03-31 13:51:12

+0

是的! AutoMapper威脅空值,也適用於我! – 2016-01-31 19:54:52