原文: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; } } }