今天来写一下关于.net中AutoMapper的使用中的常用的地方。首先我个人是非常非常喜欢AutoMapper的,因为它真正做到了又轻量又好用,它只干了一件事,就是帮你做对象类型转换。下面就记录一下它的使用,我的代码是基于.net core的
第一步:管理NuGet包搜索AutoMapper 安装AutoMapper.Extensions.Microsoft.DependencyInjection
第二步:在Startup.cs里的ConfigureServices方法里加入配置 services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
第三步:然后创建一个类 该类继承AutoMapper里的Profile类,对象映射的配置就在这个类里面 当然这样继承了Profile类的类可以创建多个 每一个类里面的映射配置都有效,代码如下
/// <summary>
/// AutoMapper配置类
/// </summary>
public class MyDemoProfile : Profile
{
public MyDemoProfile()
{
CreateMap<Person, PersonDto>();
}
}
//两个用于测试的类
public class Person
{
public string IdCard { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
}
public class PersonDto
{
public string IdCard { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
}
/// <summary>
/// 测试API
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class AutoMapperDemoController : ControllerBase
{
private readonly IMapper mapper;
public AutoMapperDemoController(IMapper mapper)
{
this.mapper = mapper ?? throw new ArgumentNullException(nameof(mapper));
}
[HttpGet, Route("GetPerson")]
public IActionResult GetPerson()
{
Person person = new Person
{
IdCard = "12121212112121",
Name = "张三",
Age = 18,
Address = "内蒙古自治区锡林浩特市",
Phone = "1111111111111",
};
PersonDto personDto = mapper.Map<PersonDto>(person);
return Ok(personDto);
}
}
测试结果如下
以上就是AutoMapper最基本的使用了,下一篇再写一些AutoMapper里常用的配置用以解决两个要做转换的对象的一些常见的问题。