Automapper 的ying'yong
AutoMapper net core#
1.入门例子#
public class Foo
{
public int ID { get; set; }
public string Name { get; set; }
}
public class FooDto
{
public int ID { get; set; }
public string Name { get; set; }
}
public void Map()
{
var config = new MapperConfiguration(cfg => cfg.CreateMap<Foo, FooDto>());
var mapper = config.CreateMapper();
Foo foo = new Foo { ID = 1, Name = "Tom" };
FooDto dto = mapper.Map<FooDto>(foo);
}
2.在net core的应用#
net framework 引入包: AutoMapper
net core 引入专属包:AutoMapper.Extensions.Microsoft.DependencyInjection
结构图:
准备数据:
public class Foo
{
public int ID { get; set; }
public string Name { get; set; }
public int Price { get; set; }
}
public class FooDto
{
public int ID { get; set; }
public string Name { get; set; }
public int NewPrice { get; set; }
}
public class FooProfile : Profile
{
public FooProfile()
{
//从 src 投影到 dest
//destinationMember:投影对象
//memberOptions:(opt:原始对象).MapFrom:使用自定义表达式映射目标成员。用于LINQ投影(ProjectTo)。
CreateMap<Foo, FooDto>()
.ForMember(dest => dest.NewPrice, opt => opt.MapFrom(src => src.Price + 1));
}
}
在Startup.cs 注入:
//扫描profile文件
//如果只扫描一个FooProfile,使用 services.AddAutoMapper(FooProfile);
services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
Controller 两种方式:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private readonly IMapper _mapper;
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger, IMapper mapper)
{
_logger = logger;
_mapper = mapper;
}
[HttpGet]
public JsonResult Get()
{
Foo foo = new Foo { ID = 1, Name = "Tom", Price = 1 };
//1.Profile 注入
FooDto dto = _mapper.Map<FooDto>(foo);
//2.不注入
//var config = new MapperConfiguration(cfg => cfg.CreateMap<Foo, FooDto>().ForMember(dest => dest.NewPrice, opt => opt.MapFrom(src => src.Price + 2)));
//var mapper2 = config.CreateMapper();
//FooDto dto = mapper2.Map<FooDto>(foo);
return new JsonResult(dto);
}
}
3.参考#
automapper net#
作者:【唐】三三
出处:https://www.cnblogs.com/tangge/p/14873268.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
分类:
ASP.NET Core
标签:
开源组件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2014-06-10 Asp.Net - 9.socket(聊天室)