• AutoMapper用法


    什么是AutoMapper?


    在多层结构中,经常用到对象到对象的转化,手工去写复制太过麻烦。而AutoMapper就是一个可以实现自动转换的类库。 它提供了一些有趣的约定,从而弄清楚如何将类型A映射到类型B.只要类型B遵循AutoMapper建立的约定,映射两种类型几乎就是零配置。

    怎么使用Automapper

    使用Nuget 直接引用AutoMapper就可以使用AutoMapper了。

    添加MapperTool类

    private static volatile MapperTool mapper = null;
            private static object syncRoot = new Object();
            public static readonly List<Type> typeList = null;
            /// <summary>
            /// 注册需要转换的类型
            /// </summary>
            private MapperTool()
            {
                Mapper.Initialize(cfg =>
                {
                    //指定不同属性映射demo
                    //cfg.CreateMap<auth_userVo, t_auth_user>()
                    //   .ReverseMap()
                    //   .ForMember(dest => dest.id, opt => opt.MapFrom(src => src.rid))
                    //   .ForMember(dest => dest.update, opt => opt.MapFrom(src => src.create));
                    cfg.CreateMap<t_auth_rules, auth_rulesDto>().ReverseMap();
                    cfg.CreateMap<UserListPo, UserListVo>()
                     .ForMember(dest => dest.Address, opt => opt.MapFrom(src => src.City + src.Address)).ReverseMap();
    //设置反向映射
    ReverseMap()
                   //字段类型不太一致的,但是有规律的 完全可以自动实现转化 不需要在这里设置(如果是list数组必须创建CreateMap)
    //类型不一致,名称不符合约定的就需要使用MapFrom 来指定 也可以再内部加入简单的逻辑运算 如两个字段值合并成新的字段ForMember(dest => dest.Address, opt => opt.MapFrom(src => src.City + src.Address))) })
    //验证是否所有字段都转换了 //Mapper.Configuration.AssertConfigurationIsValid(); }

    private MapperTool(List<Type[]> TypeList) { Mapper.Initialize(cfg => { foreach (var type in TypeList) { cfg.CreateMap(type[0], type[1]).ReverseMap();}
    }); 
    }

    /// <summary>
    /// 初始化注册Mapper
    /// </summary>
    public static MapperTool Instance { get { if (mapper == null) { lock (syncRoot) { if (mapper == null) { mapper = new MapperTool(); } } } return mapper; } }

    /// <summary>
    /// 传入需要转换的对象
    /// </summary>
    /// <typeparam name="F">需要转换的对象类型</typeparam>
    /// <typeparam name="T">转换目标对象类型</typeparam>
    /// <param name="f">需要转换的对象</param>
    /// <returns>目标对象</returns>
    public T Map<F, T>(F f) where F : new() where T : new() { return Mapper.Map<F, T>(f); }

    调用(当前版本6.2.2)

       对象互转:

           UserListVo uv=    MapperTool.Instance.Map<UserListPo, UserListVo>(new UserListPo())

      集合互转:

              List<UserListVo> uvs=   MapperTool.Instance.Map<List<UserListPo>, List<UserListVo>>(new List<UserListPo>())

    新版使用操作:https://www.cnblogs.com/dawenyang/p/7966850.html

  • 相关阅读:
    20155222 2016-2017-2 《Java程序设计》第8周学习总结
    20155222 2016-2017-2 《Java程序设计》实验一
    20155222 2016-2017-2 《Java程序设计》第7周学习总结
    20155222 2016-2017-2 《Java程序设计》第6周学习总结
    # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
    20155222 2016-2017-2 《Java程序设计》第4周学习总结
    20155222 2016-2017-2 《Java程序设计》第3周学习总结
    # 20155222卢梓杰 2016-2017-2 《Java程序设计》第2周学习总结
    20155222卢梓杰 《Java程序设计》第1周学习总结
    将linux上的Java代码上传到码云
  • 原文地址:https://www.cnblogs.com/manwwx129/p/10168463.html
Copyright © 2020-2023  润新知