• 开源项目 07 AutoMapper


     原文:https://www.cnblogs.com/zinan/p/10629277.html

     AutoMapper的版本:7.0.1

    映射的时候忽略掉某些字段:

    Mapper.Initialize(x =>
    {
        x.CreateMap<tb_Projects, ProjectDto>().ForMember(dest => dest.isParent, opt => opt.Ignore());
    });
    using AutoMapper;
    using Newtonsoft.Json;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApp2.test1
    {
        public class Class7
        {
            //原文:https://www.cnblogs.com/mushroom/p/4291975.html
    
            public void test1()
            {
                //demo中的不可用
                //Mapper.CreateMap<Order, OrderDto>();
    
                //CreateMap应该是要写到Global.asax文件里面的
                Mapper.Initialize(x =>
                {
                    x.CreateMap<Order, OrderDto>();
                });
    
                //验证配置是否有效,无效会抛出异常:
                Mapper.AssertConfigurationIsValid();
    
    
                var order = new Order();
                order.Name = "order1";
    
                var customer = new Customer
                {
                    Name = "customer1"
                };
    
                order.Customer = customer;
    
    
                //匹配规则:
                //  名称相同的属性进行映射,不区分大小写。
                //  带Get前缀的方法进行映射,如例子中:
                //      映射器会把Order中的GetTotal分割成Get、Total 2个词, 把分割出来的Total与OrderDto中的Order进行匹配映射。
                //  目标类型属性分割,如例子中:
                //      映射器会把OrderDto中的CustomerName分割成Customer、Name。然后在Order中去Customer类属性中查找Name的属性。
                OrderDto dto = Mapper.Map<OrderDto>(order);
    
    
                Console.WriteLine(JsonConvert.SerializeObject(dto));
            }
    
    
            public void test2()
            {
                // 源对象
                var calendarEvent = new CalendarEvent
                {
                    Date = new DateTime(2008, 12, 15, 20, 30, 0),
                    Title = "假期公司聚会"
                };
    
                // 配置AutoMapper。dest是目标表达式。opt是源表达式
                Mapper.Initialize(x =>
                {
                    x.CreateMap<CalendarEvent, CalendarEventForm>()
                    .ForMember(dest => dest.EventDate, opt => opt.MapFrom(src => src.Date.Date))
                    .ForMember(dest => dest.EventHour, opt => opt.MapFrom(src => src.Date.Hour))
                    .ForMember(dest => dest.EventMinute, opt => opt.MapFrom(src => src.Date.Minute));
                });
    
    
                // 执行映射
                CalendarEventForm form = Mapper.Map<CalendarEvent, CalendarEventForm>(calendarEvent);
    
                //form.EventDate.ShouldEqual(new DateTime(2008, 12, 15));
                //form.EventHour.ShouldEqual(20);
                //form.EventMinute.ShouldEqual(30);
                //form.Title.ShouldEqual("假期公司聚会");
    
                Console.WriteLine(JsonConvert.SerializeObject(form));
            }
    
        }
    
    
    
    
        public class CalendarEvent
        {
            public DateTime Date { get; set; }
            public string Title { get; set; }
        }
        public class CalendarEventForm
        {
            public DateTime EventDate { get; set; }
            public int EventHour { get; set; }
            public int EventMinute { get; set; }
            public string Title { get; set; }
        }
    
    
    
    
    
        public class Order
        {
            public string Name { get; set; }
            public Customer Customer { get; set; }
            public decimal GetTotal()
            {
                return 10 * 10;
            }
        }
        public class Customer
        {
            public string Name { get; set; }
        }
    
        public class OrderDto
        {
            public string Name { get; set; }
            public string CustomerName { get; set; }
            public decimal Total { get; set; }
        }
    }
  • 相关阅读:
    转载 linux笔记
    ibatis3.06 + spring 3.06+velocity 整合的VSSI框架测试
    MongoDB的主键类型修改,记录下
    WPF ItemsControl 的 ItemsSource 绑定的一个bug
    Android + HTML开发手机应用 demo 代码
    数据库资深工程师 期待加盟
    Mapbar POI 转 经纬度坐标的各个版本
    MongoDB的GeoSpatial索引 之 GeoNear命令,取得距离
    建立可靠性 基于Sql server 的网站服务器群的设想
    css3替代图片的尖角圆角效果
  • 原文地址:https://www.cnblogs.com/guxingy/p/11195107.html
Copyright © 2020-2023  润新知