一、AutoMapper
1、概述
AutoMapper是一个.NET库,用于简化对象之间的映射。它可以帮助开发人员在不同类型之间进行自动转换,从而减少重复的手动映射代码。
使用AutoMapper,开发人员可以定义映射规则,然后该库会自动执行对象之间的映射。这使得在应用程序中对数据进行转换和映射变得更加简单和高效。
下面是AutoMapper的一些常见功能:
对象到对象的映射:简化了从一个对象类型到另一个对象类型的转换。
集合的映射:可以自动映射集合中的对象,减少了手动迭代和映射的工作。
可配置的映射规则:开发人员可以定义自定义的映射规则,以满足特定的需求。
灵活的映射选项:AutoMapper提供了许多选项和配置,以满足各种映射需求。
2、基础应用
2.1、定义model和DTO
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public DateTime CreatedDate { get; set; }
public string Flag { get; set; }
}
//Id->StudentId ,DateTime->string, Flag 没有了
public class StudentDto
{
public int StudentId { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string CreatedDate { get; set; }
}
2.2、nuget包AutoMapper,AutoMapper.Extensions.Microsoft.DependencyInjection
并自定义配置类,继承Profile
public class AutoMapperTest:Profile
{
public AutoMapperTest()
{
//Student和StudentDto映射
CreateMap<Student, StudentDto>()
.ForMember(dest => dest.StudentId, opt => opt.MapFrom(src=>src.Id))//将不同的两个名字映射
.ForMember(dest => dest.CreatedDate, opt => opt.MapFrom(src => src.CreatedDate.ToString()))//将datetime类型转成字符串
.ReverseMap();// ReverseMap表示双向映射
}
}
2.3、program.cs
//添加automapper
builder.Services.AddAutoMapper(typeof(AutoMapperTest));
2.4、测试
[Route("api/[controller]")]
[ApiController]
public class AutomapperTestController : ControllerBase
{
private readonly IMapper _mapper;
public AutomapperTestController(IMapper mapper)
{
_mapper = mapper;
}
[HttpPost]
public Student Method1(StudentDto studentDto)
{
Student student = _mapper.Map<Student>(studentDto);
return student;
}
}
2.5、结果
请求体
响应体
这样,前端传的值就会经过转换映射到model