• 1.1入门指南(AutoMapper官方文档翻译)


    官方文档原文链接

    什么是AutoMapper?

    AutoMapper是一个对象-对象映射器。对象-对象映射的工作原理是将一种类型的输入对象转换为不同类型的输出对象。AutoMapper的有趣之处在于,它提供了一些有趣的约定,将如何将类型A映射到类型B的繁琐工作解决掉。只要类型B遵循AutoMapper的既定约定,映射两个类型几乎不需要任何配置。

    为什么要使用AutoMapper?

    映射代码很无聊。测试映射代码就更无聊了。AutoMapper提供了简单的类型配置,以及简单的映射测试。真正的问题可能是“为什么要使用对象-对象映射?”映射可以发生在应用程序中的许多地方,但主要是在层与层之间的边界,例如UI/领域(Domain)层之间,或服务(Service)/领域(Domain)层之间。一层的关注点经常与另一层的关注点发生冲突,因此对象-对象映射使得模型之间隔离,每层的关注点只会影响该层中的类型。

    如何使用AutoMapper?

    首先,您需要同时使用源和目标类型。目标类型的设计可能会受到其所在层的影响,但是只要成员的名称与源类型的成员匹配,AutoMapper就能工作得最好。如果您有一个名为“FirstName”的源成员,它将自动映射到名称为“FirstName”的目标成员。AutoMapper还支持扁平化Flattening)。

    当将源映射到目标时,AutoMapper将忽略空引用异常。设计就是如此。如果不喜欢这种方法,可以根据需要将AutoMapper的方法与自定义值解析器(custom value resolvers)结合使用。

    一旦有了类型,就可以使用 MapperConfigurationCreateMap 为这两种类型创建映射。通常每个AppDomain只需要一个 MapperConfiguration 实例,并且应该在启动期间实例化。可以在 Setup 中看到更多初始设置的示例。

    var config = new MapperConfiguration(cfg => cfg.CreateMap<Order, OrderDto>());
    
    • 1

    左边的类型是源类型,右边的类型是目的类型。要执行映射,调用其中一个Map重载:

    var mapper = config.CreateMapper();
    // 或者
    var mapper = new Mapper(config);
    OrderDto dto = mapper.Map<OrderDto>(order);
    
    • 1
    • 2
    • 3
    • 4

    大多数应用程序可以使用依赖注入来注入创建的 IMapper 实例。

    AutoMapper还有这些方法的非泛型版本,用于在编译时可能不知道类型的情况。

    在哪里配置AutoMapper?

    每个AppDomain只应该配置一次。这意味着配置代码的最佳位置是在应用程序启动时,例如用于ASP.NET应用程序的 Global.asax 文件。通常,配置引导程序(bootstrapper)类在它自己的类中,并且这个引导程序类是从startup方法调用的。引导程序类应该构造一个 MapperConfiguration 对象来配置类型映射。

    对于ASP.NET Core,依赖注入(Dependency Injection)文章展示了如何在应用程序中配置AutoMapper。

    如何测试映射?

    要测试映射,你需要创建一个做两件事的测试:

    • 调用 bootstrapper 类来创建所有映射
    • 调用 MapperConfiguration.AssertConfigurationIsValid

    例如:

    var config = AutoMapperConfiguration.Configure();
    config.AssertConfigurationIsValid();
    
    • 1
    • 2

    译者代码实现

    github仓库地址

  • 相关阅读:
    java split教程
    MCAL实战二(S32K324-NXP EB tresos GPT驱动配置详解)
    优维产品使用最佳实践:实例拓扑
    如何从0开始搭建一个大语言模型并进一步训练微调?
    供应链管理(SCM):界面设计全面扫盲,得供应链者得天下
    java遇到的一些集合相关知识
    第二套.py
    一文搞懂APT攻击
    2022,程序员应该如何找工作
    海光信息科创板上市:市值139​7亿 技术源于AMD授权
  • 原文地址:https://blog.csdn.net/yan_yu_lv_ji/article/details/133149176