11.转换匿名对象 结合LINQ映射新的实体类.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using AutoMapper;

using System.Data;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

//1.普通转换

Name name1 = new Name() { FirstName = "L", LastName = "jz" };

Mapper.CreateMap()

.BeforeMap((name, nameDto) => Console.WriteLine("hello world before"))

.AfterMap((name, nameDto) => Console.WriteLine("hello world after"));

NameDto nameDto1 = Mapper.Map(name1);

Console.WriteLine("1");

Console.WriteLine(nameDto1.FirstName + nameDto1.LastName);

Console.WriteLine();

//Console.ReadKey();

//整体设置

//2.整体即时转换

Mapper.Reset();

Name name2 = new Name() { FirstName = "L", LastName = "jz" };

Mapper.CreateMap()

.ConstructUsing(name => new NameDto() { AllName = name.FirstName + name.LastName });

NameDto nameDto2 = Mapper.Map(name2);

Console.WriteLine("2");

Console.WriteLine(nameDto2.AllName);

Console.WriteLine();

//Console.ReadKey();

//3.整体通过TypeConverter类型转换

Mapper.Reset();

Name name3 = new Name() { FirstName = "L", LastName = "jz" };

Mapper.CreateMap()

.ConvertUsing();

NameDto nameDto3 = Mapper.Map(name3);

Console.WriteLine("3");

Console.WriteLine(nameDto3.AllName);

Console.WriteLine();

//Console.ReadKey();

//单属性设置

//4.属性条件转换

Mapper.Reset();

Name name4 = new Name() { FirstName = "L", LastName = "jz" };

Mapper.CreateMap()

.ForMember(name => name.FirstName, opt => opt.Condition(name => !name.FirstName.Equals("l", StringComparison.OrdinalIgnoreCase)));

NameDto nameDto4 = Mapper.Map(name4);

Console.WriteLine("4");

Console.WriteLine(string.IsNullOrEmpty(nameDto4.FirstName));

Console.WriteLine();

//Console.ReadKey();

//5.属性忽略

Mapper.Reset();

Name name5 = new Name() { FirstName = "L", LastName = "jz" };

Mapper.CreateMap()

.ForMember(name => name.FirstName, opt => opt.Ignore());

NameDto nameDto5 = Mapper.Map(name5);

Console.WriteLine("5");

Console.WriteLine(string.IsNullOrEmpty(nameDto5.FirstName));

Console.WriteLine();

//Console.ReadKey();

//6.属性转换

Mapper.Reset();

Name name6 = new Name() { FirstName = "L", LastName = "jz" };

Mapper.CreateMap()

.ForMember(name => name.AllName, opt => opt.MapFrom(name => name.FirstName + name.LastName));

NameDto nameDto6 = Mapper.Map(name6);

Console.WriteLine("6");

Console.WriteLine(nameDto6.AllName);

Console.WriteLine();

//Console.ReadKey();

//7.属性通过ValueResolver转换

Mapper.Reset();

Name name7 = new Name() { FirstName = "L", LastName = "jz" };

Mapper.CreateMap()

.ForMember(storeDto => storeDto.Name, opt => opt.ResolveUsing());

StoreDto store1 = Mapper.Map(name7);

Console.WriteLine("7");

Console.WriteLine(store1.Name.FirstName + store1.Name.LastName);

Console.WriteLine();

//Console.ReadKey();

//8.属性填充固定值

Mapper.Reset();

Name name8 = new Name() { FirstName = "L", LastName = "jz" };

Mapper.CreateMap()

.ForMember(name => name.AllName, opt => opt.UseValue("ljzforever"));

NameDto nameDto8 = Mapper.Map(name8);

Console.WriteLine("8");

Console.WriteLine(nameDto8.AllName);

Console.WriteLine();

//Console.ReadKey();

//9.属性格式化

Mapper.Reset();

Name name9 = new Name() { FirstName = "L", LastName = "jz" };

Mapper.CreateMap()

.ForMember(name => name.FirstName, opt => opt.AddFormatter());

NameDto nameDto9 = Mapper.Map(name9);

Console.WriteLine("9");

Console.WriteLine(nameDto9.FirstName);

Console.WriteLine();

//Console.ReadKey();

//10.属性null时的默认值

Mapper.Reset();

Name name10 = new Name() { FirstName = "L" };

Mapper.CreateMap()

.ForMember(name => name.LastName, opt => opt.NullSubstitute("jz"));

NameDto nameDto10 = Mapper.Map(name10);

Console.WriteLine("10");

Console.WriteLine(nameDto10.LastName);

Console.WriteLine();

//Console.ReadKey();

//其它设置与特性

//11.转换匿名对象

Mapper.Reset();

object name11 = new { FirstName = "L", LastName = "jz" };

NameDto nameDto11 = Mapper.DynamicMap(name11);

Console.WriteLine("11");

Console.WriteLine(nameDto11.FirstName + nameDto11.LastName);

Console.WriteLine();

//Console.ReadKey();

//12.转换DataTable

Mapper.Reset();

DataTable dt = new DataTable();

dt.Columns.Add("FirstName", typeof(string));

dt.Columns.Add("LastName", typeof(string));

dt.Rows.Add("L", "jz");

List nameDto12 = Mapper.DynamicMap>(dt.CreateDataReader());

Console.WriteLine("12");

Console.WriteLine(nameDto12[0].FirstName + nameDto12[0].LastName);

Console.WriteLine();

//Console.ReadKey();

//emitMapper error

//List nameDto20 = EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper>().Map(dt.CreateDataReader());

//13.转化存在的对象

Mapper.Reset();

Mapper.CreateMap()

.ForMember(name => name.LastName, opt => opt.Ignore());

Name name13 = new Name() { FirstName = "L" };

NameDto nameDto13 = new NameDto() { LastName = "jz" };

Mapper.Map(name13, nameDto13);

//nameDto13 = Mapper.Map(name13);//注意,必需使用上面的写法,不然nameDto13对象的LastName属性会被覆盖

Console.WriteLine("13");

Console.WriteLine(nameDto13.FirstName + nameDto13.LastName);

Console.WriteLine();

//Console.ReadKey();

//14.Flatten特性

Mapper.Reset();

Mapper.CreateMap();

Store store2 = new Store() { Name = new Name() { FirstName = "L", LastName = "jz" } };

FlattenName nameDto14 = Mapper.Map(store2);

Console.WriteLine("14");

Console.WriteLine(nameDto14.NameFirstname + nameDto14.NameLastName);

Console.WriteLine();

//Console.ReadKey();

//15.将Dictionary转化为对象,现在还不支持

Mapper.Reset();

Mapper.CreateMap, Name>();

Dictionary dict = new Dictionary();

dict.Add("FirstName", "L");

//Name name15 = Mapper.DynamicMap, Name>(dict);

Name name15 = Mapper.Map, Name>(dict);

Console.WriteLine("15");

Console.WriteLine(name15.FirstName);

Console.WriteLine();

Console.ReadKey();

}

}

public class Store

{

public Name Name { get; set; }

public int Age { get; set; }

}

public class Name

{

public string FirstName { get; set; }

public string LastName { get; set; }

}

public class StoreDto

{

public NameDto Name { get; set; }

public int Age { get; set; }

}

public class NameDto

{

public string FirstName { get; set; }

public string LastName { get; set; }

public string AllName { get; set; }

}

public class FlattenName

{

public string NameFirstname { get; set; }

public string NameLastName { get; set; }

}

public class NameConverter : TypeConverter

{

protected override NameDto ConvertCore(Name source)

{

return new NameDto() { AllName = source.FirstName + source.LastName };

}

}

public class NameResolver : ValueResolver

{

protected override NameDto ResolveCore(Name source)

{

return new NameDto() { FirstName = source.FirstName, LastName = source.LastName };

}

}

public class NameFormatter : ValueFormatter

{

protected override string FormatValueCore(NameDto name)

{

return name.FirstName + name.LastName;

}

}

public class StringFormatter : ValueFormatter

{

protected override string FormatValueCore(string name)

{

return name + "-";

}

}

}

automapper自动创建映射_AutoMapper 自动映射工具相关推荐

  1. k8s存储+storageclass自动创建pv+StatefulSet自动创建pvc

    k8s存储 k8s存储 storageclass自动创建pv StatefulSet k8s存储 docker存储----k8s存储 docker的容器层可以提供存储:存储在可写层(CopyOnWri ...

  2. automapper自动创建映射_AutoMapper自动映射

    十年河东,十年河西,莫欺少年穷. 学无止境,精益求精. 不扯犊子,直接进入正题: AutoMapper自动映射常用于EF中,能很好的解决DTO和Model之间相互映射的问题.在未使用AutoMappe ...

  3. MySQL8 设置自动创建时间和自动更新时间

    业务场景: 1.在数据库表中的数据,要求记录每一条新增数据的创建时间,时间格式要求明确至:年月日:时分秒. 2.在数据库表中的数据,要求记录每一条更新数据的更新时间,时间格式要求明确至:年月日:时分秒 ...

  4. Spring-AOP 自动创建代理之AnnotationAwareAspectJAutoProxyCreator

    文章目录 导读 实例 导读 Spring-AOP 自动创建代理 Spring-AOP 自动创建代理之BeanNameAutoProxyCreator Spring-AOP 自动创建代理之Default ...

  5. Spring-AOP 自动创建代理之DefaultAdvisorAutoProxyCreator

    文章目录 导读 概述 实例 导读 Spring-AOP 自动创建代理 Spring-AOP 自动创建代理之BeanNameAutoProxyCreator Spring-AOP 自动创建代理之Defa ...

  6. Spring-AOP 自动创建代理之BeanNameAutoProxyCreator

    文章目录 导读 实例 导读 Spring-AOP 自动创建代理 Spring-AOP 自动创建代理之BeanNameAutoProxyCreator Spring-AOP 自动创建代理之Default ...

  7. Spring-AOP 自动创建代理

    导读 概述 实现类介绍 BeanNameAutoProxyCreator DefaultAdvisorAutoProxyCreator AnnotationAwareAspectJAutoProxyC ...

  8. Simulink Test自动化(二)-自动创建TestFile,TestSuite及TestCase

    文章目录 前言 自动创建Test File 配置覆盖度选项 自动创建Test Suite 自动创建Test case 实现效果 总结 前言 在前面一篇关于Simulink Test自动化的文章中,传送 ...

  9. IDEA使用mybatis实现generator自动生成MSSQLSERVER数据库表映射

    IDEA使用mybatis实现generator自动生成MSSQLSERVER数据库表映射,generatorConfig.xml文件中配置如下内容: <?xml version="1 ...

最新文章

  1. 喀什市2021年高考成绩查询,2021年新疆高考查分网站查分网址:http://www.xjzk.gov.cn/...
  2. Exchange Server 2016管理系列课件53.DAG管理之设置滞后数据库副本
  3. d3.js 制作简单的俄罗斯方块
  4. 生成0到1之间随机数的C代码
  5. rect函数_R函数不会写,quot;抄quot;总会吧!
  6. 使用JFlex生成词法分析器 1:安装配置
  7. elasticdump 数据导入导出
  8. 【语音分析】基于matlab线性预测系数对比【含Matlab源码 557期】
  9. 2022抖音日活用户超8亿,旅游商家如何从抖音获客?
  10. Unity LOGO流光效果
  11. vue中el-calendar自定义日历控件
  12. spark大数据技术与应用 实训
  13. 2021年安全员-A证(江西省)报名考试及安全员-A证(江西省)考试平台
  14. 通过vdi备份linux,centos/ubuntu挂载vmdk、 vdi为块设备的方法(非vdfuse)
  15. Java企业工商信息查询
  16. 项目实战:小米商城官网及秒杀高仿(html+css+js)
  17. 【阿里云】短信服务 无认证 测试版本 附带短信发送工具类
  18. zip直链生成网站_手把手教你如何用飞桨自动生成二次元人物头像
  19. 绝顶高手必经之路【资源共享】
  20. 77_Qt_承接【75】解决表格tableWidget添加行、列,删除行、列,以及下拉框comboBox动态跟随变化问题【难点:removeItem、addItem所需参数不同】

热门文章

  1. OpenStack — Nova
  2. 植物大战僵尸中文版 for Mac v1.2 好玩的怀旧游戏
  3. 微信小程序之wxs页面使用正则表达式
  4. html文字冒险游戏,文字类谍战交互游戏能有这么好玩?全靠这部超神原作
  5. 万字详解SSH(SSH登录原理+SSH配置+模拟实现SSH免密登录)
  6. ORM 系列:一个个人ORM映射框架
  7. 各种排序的动图.gif
  8. android开发程序崩溃闪退问题
  9. 「另类」图达通,还缺一个二次进化
  10. 视频相关的一些基本概念