美文网首页
[翻译]AutoMapper 官方入门文档 Getting st

[翻译]AutoMapper 官方入门文档 Getting st

作者: 时代小召唤 | 来源:发表于2017-03-05 14:58 被阅读0次

    译者注:技术日新月异,不保证此文章有效性,请以官方更新为准.另外为了便于理解,翻译不会照搬原文而是稍作修改

    翻译日期 2017年3月5日

    原帖地址

    什么是AutoMapper?


    AutoMapper是一个对象到对象的转换映射工具(object-object mapper).它能把一个输入对象转换成一个不同类型的对象输出.AutoMapper更有趣的地方是它提供了一些有趣的惯例规则来帮助我们转换对象.可以这样理解:只要按照AutoMapper 建立的规则来(构造实体),就不需要进行任何多余的设置.

    为什么使用AutoMapper?


    手动配对 非常无聊,测试配对是否正确 更无聊.AutoMapper配置简单,测试容易,还不快用?.其实这个问题要这么问"为毛要用object-object mapper?"配对会发生在很多地方,特别是层与层之间,比如UI层和领域层,或者服务层和领域层.修改了一个层通常会导致另外一个层的冲突,所以让object-object mapper来隔离模型,让每个层都能独立做好自己的事吧.

    如何使用AutoMapper?


    首先,你需要一个原始类和目标类.虽然目标类的设计可以按照他所在的层来,但是如果能够保证字段名称相同AutoMapper 能更好的为你服务.比如 你有一个原始类的字段叫 "FirstName",他会自动的配对目标类中的"FirstName"字段.AutoMapper 同样支持 Flattening

    AutoMapper在配对的时候会忽略空引用异常,这个是故意设计的,如果你不喜欢,你可以搭配使用Custom-value-resolvers

    一旦你有了想要配对的类型,那就用 MapperConfiguration 或者 静态类 Mapper 创建一个配对.通常情况下,每个应用程序域只需要一个 MapperConfiguration 实例 并且在启动的时候被实例化,你可以使用Mapper.Initialize (更多例子请看 Static-and-Instance-API )

       Mapper.Initialize(cfg => cfg.CreateMap<Order, OrderDto>());
        //或者
        var config = new MapperConfiguration(cfg => cfg.CreateMap<Order, OrderDto>());
    

    左边是原始,右边是目标类,是用静态方法还是实例化Mapper来配对 取决于 static or instance initialization:

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

    大多数应用可以使用依赖注入的方法来 注入 已经创建的 IMapper 实例

    AutoMapper 针对上面的方法还有非泛型的版本,当在编译的时候还不知道类型时使用

    在哪里配置AutoMapper?


    如果你使用静态Mapper配对,每个程序领域只能设置一次,也就是说最好的地方就是在程序开始的地方,比如ASP.NET程序就设置在 Global.asax 文件下.通常情况下配置启动器的类需要自己单独一个类,然后在应用程序的启动方法中被调用,启动器的类可以叫 Mapper.Initialize 来配置所有的配对

    怎么测试我的mappings?


    为了测试你的配对,你需要做两件事

    • 调用启动器类创建好所有的配对
    • 调用 MapperConfiguration.AssertConfigurationIsValid
      比如:
    var config = AutoMapperConfiguration.Configure();
    
    config.AssertConfigurationIsValid();
    

    有demo吗?

    看看dnrTV episode on AutoMapper.

    相关文章

      网友评论

          本文标题:[翻译]AutoMapper 官方入门文档 Getting st

          本文链接:https://www.haomeiwen.com/subject/bevsgttx.html