0

我正在构建具有以下结构的自动映射器:

领域:

public class EnterpriseInfo
{
    public string Name { get; set; }
    public string Description { get; set; }
    public bool Installed { get; set; }
    public bool Enabled { get; set; }
    public List<Msg> MsgList { get; set; }

    ...some methods...
}


public class Msg
{ 
    public DateTime DateTime { get; set; }
    public string From { get; set; }
    public string Message { get; set; }
 }

视图模型类:

public class HomeLogonHomeViewModel
{
    public string CompanyName;
    public List<SysMsg> MsgList;
}

   public class SysMsg 
   {   
        public DateTime DateTime { get; set; }
        public string From { get; set; }
        public string Message { get; set; }
   }

在视图中,我需要显示如下内容:

Messages for company: BALBALBALBA

12/12/12 00:00 From: AAA Message: Nnonononon
12/12/12 00:00 From: AAA Message: Nnonononon
12/12/12 00:00 From: AAA Message: Nnonononon
12/12/12 00:00 From: AAA Message: Nnonononon
12/12/12 00:00 From: AAA Message: Nnonononon
12/12/12 00:00 From: AAA Message: Nnonononon

我在配置自动映射器时遇到了麻烦,因为我有一个带有单个字段的单个字段和一个带有另一个列表的列表。有人可以帮帮我吗...

另外,我可能会问这是否确实需要 Automapper....

[编辑]

工作代码:

    Mapper.CreateMap<EnterpriseInfo, HomeLogonHomeViewModel>()
        .ForMember(dest => dest.CompanyName, opt => opt.MapFrom(src => src.Name));

如果将 Msg 更改为相同的名称,则无需将 Msg 显式显示为 SysMsg。

4

1 回答 1

1

您需要将 EnterpriseInfo 映射到 HomeLogonHomeViewModel。我建议将域中的 Msg 类命名为 SysMsg,反之亦然。然后明确映射 CompanyName 成员和 SysMsg 成员。像这样的东西...

Mapper.CreateMap<EnterpriseInfo,HomeLogonHomeViewModel>()
  .ForMember(dest=>dest.CompanyName,opt=> opt.Name)
  .ForMember(dest=>dest.SysMsg, opt=>opt.SysMsg);
于 2013-09-07T16:33:56.020 回答