You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C#映射库实现嵌套Message到MessageViewModel的对象转换?

推荐用AutoMapper轻松完成嵌套对象映射

当然有!这类业务模型到UI视图模型的嵌套映射场景,AutoMapper是最常用也最省心的工具——它专门解决这种对象间的属性转换,尤其是对嵌套结构的支持非常友好,完全不用你手动写递归循环去处理子消息列表。

步骤1:安装AutoMapper

首先通过NuGet安装AutoMapper包:

# NuGet包管理器控制台
Install-Package AutoMapper

# 或者用.NET CLI
dotnet add package AutoMapper

步骤2:配置映射规则

创建一个映射配置类,指定Message到MessageViewModel的转换规则,AutoMapper会自动递归处理嵌套的List<Message>到List<MessageViewModel>的转换。对于源类没有的IsSelected属性,我们可以给它设置默认值:

public class MessageMappingProfile : Profile
{
    public MessageMappingProfile()
    {
        CreateMap<Message, MessageViewModel>()
            // 给IsSelected设置默认选中状态为false
            .ForMember(dest => dest.IsSelected, opt => opt.MapFrom(src => false));
        
        // 无需额外配置嵌套的Messages属性,AutoMapper会自动应用上面的映射规则递归转换
    }
}

步骤3:初始化并使用映射器

根据你的项目类型初始化Mapper:

  • 如果是依赖注入场景(比如ASP.NET Core),可以在Program.cs里注册AutoMapper服务:
builder.Services.AddAutoMapper(typeof(MessageMappingProfile));

然后在需要映射的类中注入IMapper并使用:

public class MessageService
{
    private readonly IMapper _mapper;

    public MessageService(IMapper mapper)
    {
        _mapper = mapper;
    }

    public MessageViewModel MapToViewModel(Message businessMessage)
    {
        return _mapper.Map<MessageViewModel>(businessMessage);
    }
}
  • 如果是非DI场景(比如控制台程序),可以手动初始化:
var config = new MapperConfiguration(cfg =>
{
    cfg.AddProfile<MessageMappingProfile>();
});
IMapper mapper = config.CreateMapper();

// 假设你有一个业务层的Message实例
var businessMessage = new Message
{
    Subject = "项目进展同步",
    CreationDate = DateTime.Now,
    Messages = new List<Message>
    {
        new Message { Subject = "前端模块开发完成", CreationDate = DateTime.Now.AddHours(-2) },
        new Message { Subject = "数据库脚本已提交", CreationDate = DateTime.Now.AddHours(-3) }
    }
};

// 一键完成嵌套映射
var viewModel = mapper.Map<MessageViewModel>(businessMessage);

其他可选工具

除了AutoMapper,Mapster也是一个轻量高效的选择,它的性能更优,用法也类似,同样支持自动嵌套映射,你可以根据自己的喜好选择。

内容的提问来源于stack exchange,提问作者Radu Olteanu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:03:50