一、概述
使用Net8 搭建WebApi,需要集成AutoMap,方便开发。
二、实现
2.1 安装 AutoMapper
2.2 创建AutoProfile配置类继承Profile
namespace AnNeng.Cad.WebApi.Config
{
using AnNeng.Service.Application.CadAndOss.Dto;
using AnNeng.Service.Application.Common.Dto;
using AutoMapper;
/// <summary>
/// AutoMapper配置类.
/// </summary>
public class MyMappingProfile : Profile
{
/// <summary>
/// 配置需要的映射.
/// </summary>
public MyMappingProfile ()
{
CreateMap<EditRedisRequestInput, CreateCadFileInput>() ;
CreateMap<CreateCadFileInput,EditRedisRequestInput>();
// 如果要配置具体的字段映射,可以添加 如下:
// CreateMap<EditRedisRequestInput, CreateCadFileInput>()
//.ForMember(dest => dest.Property, opt => opt.MapFrom(src => src.AnotherProperty));
// ... 其他映射配置
// ... 其他映射配置
}
}
}
2.3 在Api 启动类 (Program.cs)里面配置AutoMap服务
// 添加AutoMapper服务
builder.Services.AddAutoMapper(options =>
{
// 可以在这里添加额外的配置,比如全局的ValueResolvers或TypeConverters
options.AddProfile<AnNengMappingProfile>(); // 添加你的映射配置Profile
});
三、使用
在Sevice类或者控制器里面依赖注入IMapper
private readonly IMapper _mapper;
/// <summary>
/// 构造函数.
/// </summary>
public MyService(
IMapper mapper,
)
{
_mapper = mapper;
}
使用代码如下:
EditRedisRequestInput editRedisRequestInput = new EditRedisRequestInput();
editRedisRequestInput = _mapper.Map<EditRedisRequestInput>(input) ;
四、抛砖引玉
这边如果有新的映射关系每次都需要去MyMappingProfile 类里面添加对应的映射关系,怎么可以做到无需再MyMappingProfile 配置便可以实现映射?就如同ABP框架里面使用AutoMap一样。