打赏

【Automapper】的使用

源码地址:https://github.com/AutoMapper/AutoMapper

官方文档:https://automapper.readthedocs.io/en/latest/ 

 

1.在MVC下引入nuget包

 

2.写个初始化类

using System;
using AutoMapper;

namespace Own.MVC
{
    public class AutoMapperConfig
    {
        private const string None = "--";
        private static volatile bool _mappedBefore;
        private static readonly object _lock = new object();

        public static void InitMappings()
        {
            lock (_lock)
            {
                if (_mappedBefore)
                {
                    return;
                }

                CreateMappingsInternal();
                _mappedBefore = true;
            }
        }

        private static void CreateMappingsInternal()
        {
            Mapper.Initialize(config =>
            {
                #region Basic Types

                // 为AutoMapper配置基本数据类型之间的Map方式。
                // 涉及到具体类型的成员Map时,如有其他需要(如指定decimal的特殊精度),
                // 可在该类型的CreateMap()中使用ForMember()/ResolveUsing()等方法覆盖本段配置中提供的转换方法。
                config.CreateMap<int?, string>().ConvertUsing(src => src.HasValue ? src.Value.ToString() : None);
                config.CreateMap<decimal, string>().ConvertUsing(src => src.ToString("N2"));
                config.CreateMap<decimal?, string>().ConvertUsing(src => src.HasValue ? src.Value.ToString("N2") : None);
                config.CreateMap<double?, string>().ConvertUsing(src => src.HasValue ? src.Value.ToString("N2") : None);
                config.CreateMap<DateTime, string>().ConvertUsing(src => src.ToString("yyyy-MM-dd HH:mm"));
                config.CreateMap<DateTime?, string>().ConvertUsing(src => src.HasValue ? src.Value.ToString("yyyy-MM-dd") : None);

                #endregion

                #region User => UserViewModel

                //config.CreateMap<User, UserViewModel>()
                //    .ForMember(d => d.Birthday, opt => opt.MapFrom(src => src.Birthday.ToString("yyyy-MM-dd HH:mm")));

                #endregion
            });
        }
    }
}

 

3.Global.asax中初始化

 

4.mapping

 var viewModels = AutoMapper.Mapper.Map<List<Article>, List<ArticleViewModel>>(articleList);

 

posted @ 2019-01-17 09:14  cksun  阅读(164)  评论(0)    收藏  举报