AutoMapper于2019.8.12升级9.0
从此不再支持静态的对象转换
自己琢磨了一下,写了一套扩展
官方链接如下
https://github.com/AutoMapper/AutoMapper/tree/v9.0.0
我做了一下方便使用的简单封装
public static class AutoMapperExtension{public static IServiceCollection AddAutoMapper(this IServiceCollection service){service.TryAddSingleton<MapperConfigurationExpression>();service.TryAddSingleton(serviceProvider =>{var mapperConfigurationExpression = serviceProvider.GetRequiredService<MapperConfigurationExpression>();var instance = new MapperConfiguration(mapperConfigurationExpression);instance.AssertConfigurationIsValid();return instance;});service.TryAddSingleton(serviceProvider =>{var mapperConfiguration = serviceProvider.GetRequiredService<MapperConfiguration>();return mapperConfiguration.CreateMapper();});return service;}public static IMapperConfigurationExpression UseAutoMapper(this IApplicationBuilder applicationBuilder){return applicationBuilder.ApplicationServices.GetRequiredService<MapperConfigurationExpression>();}}
调用则是在ConfigureServices方法内增加一行
services.AddAutoMapper();
在Configure方法内增加如下代码
            var expression = app.UseAutoMapper();expression.CreateMap<Foo, FoodDto>();
这样就完成了DI版本的AutoMapper
调用例子代码如下
public class ValuesController : ControllerBase{private IMapper Mapper { get; }public ValuesController(IMapper mapper){Mapper = mapper;}// GET api/values[HttpGet]public FoodDto Get(){var model = new Foo(){Id = Guid.NewGuid(),Name = "test",Money = 15.0m};return Mapper.Map<FoodDto>(model);}}
public static class AutoMapperHelper{private static IServiceProvider ServiceProvider;public static void UseStateAutoMapper(this IApplicationBuilder applicationBuilder){ServiceProvider = applicationBuilder.ApplicationServices;}public static TDestination Map<TDestination>(object source){var mapper = ServiceProvider.GetRequiredService<IMapper>();return mapper.Map<TDestination>(source);}public static TDestination Map<TSource, TDestination>(TSource source){var mapper = ServiceProvider.GetRequiredService<IMapper>();return mapper.Map<TSource, TDestination>(source);}}

app.UseStateAutoMapper();
[HttpGet("Static")]public FoodDto Static(){var model = new Foo(){Id = Guid.NewGuid(),Name = "test",Money = 15.0m};return AutoMapperHelper.Map<FoodDto>(model);}

public static class AutoMapperHelper{...public static TDestination MapTo<TSource, TDestination>(this TSource source){var mapper = ServiceProvider.GetRequiredService<IMapper>();return mapper.Map<TSource, TDestination>(source);}public static TDestination MapTo<TDestination>(this object source){var mapper = ServiceProvider.GetRequiredService<IMapper>();return mapper.Map<TDestination>(source);}}[HttpGet("Static")]public FoodDto Static(){var model = new Foo(){Id = Guid.NewGuid(),Name = "test",Money = 15.0m};return model.MapTo<FoodDto>();}//[HttpGet("Static")]//public FoodDto Static()//{//    var model = new Foo()//    {//        Id = Guid.NewGuid(),//        Name = "test",//        Money = 15.0m//    };//    return model.MapTo<Foo, FoodDto>();//}

AutoMapper 9.0的使用相关推荐

  1. AutoMapper 8.0的应用--动态配置

    AutoMapper 8.0中,需要使用configure来配置mapper.为此,实现动态的类型配置如下 public static class AutoMapHelper     {        ...

  2. AutoMapper 9.0的改造

    AutoMapper于2019.8.12升级9.0 从此不再支持静态的对象转换 自己琢磨了一下,写了一套扩展 官方链接如下 https://github.com/AutoMapper/AutoMapp ...

  3. AutoMapper 9.0的改造(续)

    上一篇有一个读者,有疑问,如何自动化注册Dto 我开篇,做了一个自动化注册的 public sealed class AutoInjectAttribute : Attribute{public Ty ...

  4. [转载]EmitMapper,AutoMapper,NLiteMapper和手工映射性能大比拼

    在大比拼之前先讲一个小插曲,我这个人以前比较低调,做了很多好东西仅仅在公司内的朋友圈项目圈内分享,很少在博客园内进行分享,后来在dudu 老大的文章博客园现代化建设--AutoMapper有感便推荐一 ...

  5. EmitMapper,AutoMapper,NLiteMapper和手工映射性能大比拼

    在大比拼之前先讲一个小插曲,我这个人以前比较低调,做了很多好东西仅仅在公司内的朋友圈项目圈内分享,很少在博客园内进行分享,后来在dudu 老大的文章博客园现代化建设--AutoMapper有感便推荐一 ...

  6. 【C#】AutoMapper 使用手册

    文章目录 1 入门例子 2 注册 2.1 Profile 3 配置 3.1 命名约定 3.2 配置可见性 3.3 全局属性/字段过滤 3.4 识别前缀和后缀 3.5 替换字符 4 调用构造函数 5 数 ...

  7. 估算带卷积核二分类0,3的网络的收敛时间和迭代次数

    制作一个网络分类minst的0和3求出这网络的迭代次数曲线表达式n(δ),和准确率表达式p-max(δ),用预期准确率去估算n,并推算需要的时间. 将minst的28*28的图片缩小到9*9,网络用一 ...

  8. 可能是.NET领域性能最好的对象映射框架——Mapster

    我之前文章提到过 MediatR 的作者 Jimmy Bogard,他也是大名鼎鼎的对象映射框架 AutoMapper 的作者.AutoMapper 的功能强大,在 .NET 领域的开发者中有非常高的 ...

  9. angularjs sill 创建项目_开源项目——博客项目MyBlogs.Core,基于.NET 5

    个人博客站项目源码,高性能低占用的博客系统,这也许是我个人目前写过的性能最高的web项目了 .目前日均处理请求数80-120w次,同时在线活跃用户数30-100人,数据量累计已达到100多万条,数据库 ...

最新文章

  1. 使用OpenCV进行图像全景拼接
  2. 【卷积神经网络结构专题】一文详解LeNet(附代码实现)
  3. cygwin中 unable get setup.ini from... 的错误问题
  4. 功能测试工作的一点总结
  5. 2012-02-25工作记录
  6. Java中内存中的Heap、Stack与程序运行的关系
  7. python读取html文件正则替换_Python正则获取和过滤或者替换HTML标签的方法说明
  8. Web前端开发如何提高技术水平!
  9. 全局角度出发讨论敏捷
  10. NTP详解(网络时间协议)
  11. Oracle体系结构图(思维导图及详解)
  12. Jpa是什么——Jpa使用详解
  13. 西电2021计算机考研大纲,2021年西安电子科技大学硕士研究生833计算机学科专业基础综合考试大纲...
  14. 【Tools/PC】如何在一台电脑上实现双屏幕显示?
  15. 线代第二章 矩阵 +行列式与矩阵的区别
  16. HTML+CSS+JS 01篇
  17. EdgeBox_EHub_tx1_tx2_E100 开发板评测
  18. 文献翻译1:Oriented R-CNN for Object Detection
  19. 疫情过后:表面一切照旧,暗里风起云涌!
  20. 中科大ctf题型总结,来自小白的感慨

热门文章

  1. 用vmware安装雨林木风虚拟机系统的坑
  2. InnoSetup教程
  3. Android APP开发框架选择——JSBridge既个人心得和技巧
  4. Android8.0通知栏适配全面解析
  5. 解构TypeScript中class
  6. String.contains()方法
  7. 八十二、ElasticSearch详解(下)
  8. Wowza 的Http扩展 (Publish State)
  9. 计算机操作系统——LINUX的C语言编程与shell编程
  10. 王春亮推拿正骨与按摩心理学高级师传培训班