开源项目 07 AutoMapper
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(, , , , , ),
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 * ;
}
}
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; }
}
}
开源项目 07 AutoMapper的更多相关文章
- [转][C#]常用开源项目
本文来自:http://www.cnblogs.com/sunxuchu/p/6047589.html 新增两个: 纸壳CMS http://www.zkea.net/zkeacms https:// ...
- [C#]常用开源项目
[转][C#]常用开源项目 本文来自:http://www.cnblogs.com/sunxuchu/p/6047589.html Json.NET http://www.newtonsoft.com ...
- .NET平台开源项目速览(16)C#写PDF文件类库PDF File Writer介绍
1年前,我在文章:这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)中(第9个项目),给大家推荐了一个开源免费的PDF读写组件 PDFSharp,PDFSharp我2年前就看过 ...
- .NET平台开源项目速览(14)最快的对象映射组件Tiny Mapper
好久没有写文章,工作甚忙,但每日还是关注.NET领域的开源项目.五一休息,放松了一下之后,今天就给大家介绍一个轻量级的对象映射工具Tiny Mapper:号称是.NET平台最快的对象映射组件.那就一起 ...
- 【目录】本博客其他.NET开源项目文章目录
本博客所有文章分类的总目录链接:本博客博文总目录-实时更新 1.本博客其他.NET开源项目文章目录 37..NET平台开源项目速览(17)FluentConsole让你的控制台酷起来 36..NET平 ...
- 收集常用的.net开源项目
Json.NET http://json.codeplex.com/ Json.NET是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单.通过Lin ...
- [转] Android优秀开源项目
Android经典的开源项目其实非常多,但是国内的博客总是拿着N年前的一篇复制来复制去,实在是不利于新手学习.今天爬爬把自己熟悉的一些开源项目整理起来,希望能对Android开发同学们有所帮助.另外, ...
- Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)
下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableVie ...
- 59.Android开源项目及库 (转)
转载 : https://github.com/Tim9Liu9/TimLiu-Android?hmsr=toutiao.io&utm_medium=toutiao.io&utm_so ...
随机推荐
- Docker容器挂载文件(转载)
一.Docker pull 安装 Nginx 1.查看docker仓库中的 nginx 命令 # 使用 docker search 命令搜索存放在 Docker Hub 中的镜像 docker sea ...
- 【Maven基础入门】02 了解POM文件构建
温故 上一节我们说过:Maven 是一个基于POM文件的构建工具,当然离不开POM文件 POM文件是一个XML标记语言表示的文件,文件就是:pom.xml 一个POM文件包含了项目的基本信息,用于描述 ...
- CSDN刷阅读数
今天我们来盘一下csdn,做一个小程序,为什么做这个呢?今天小编看着我的博客的阅读数,唉,惨不忍睹,没办法,只能想一些........呃呃呃呃,你懂的. 话不多说,分析一波csdn的阅读数,计数原理是 ...
- 两个div并排显示,当浏览器界面缩小时会出现换行
解决:规定两个子div的父div的宽 <div id="showDataDiv" style="width: 1000px"> <div st ...
- Java之路---Day11(接口)
2019-10-25-23:22:23 目录 1.接口的概念 2.接口的定义格式 3.接口包含的内容 4.接口的使用步骤 5.继承父类并实现多个接口 6.接口之间的多继承 接口的概念 接口是指对协定进 ...
- JAVA字符串比较,BigDecimal比较
import java.math.BigDecimal; public class StrCompareTo { public static void main(String[] args) { Sy ...
- OO第三单元作业总结
OO第三单元作业总结--JML 第三单元的主题是JML规格的学习,其中的三次作业也是围绕JML规格的实现所展开的(虽然感觉作业中最难的还是如何正确适用数据结构以及如何正确地对于时间复杂度进行优化). ...
- 十大Intellij IDEA快捷键(附IDEA快捷键详细列表及使用技巧)
十大Intellij IDEA快捷键(附IDEA快捷键详细列表及使用技巧) Intellij IDEA中有很多快捷键让人爱不释手,stackoverflow上也有一些有趣的讨论.每个人都有自己的最爱, ...
- Spring的核心机制:依赖注入
依赖注入的概念 当一个对象要调用另一个对象时,一般是new一个被调用的对象,示例: class A{ private B b=new B(); public void test(){ b.say ...
- redis 订阅者与发布者(命令行)
1.连接到redis ./bin/redis-cli -c -h 127.0.0.1 -p 6379 -a xxxxxxxx 2. 订阅管道 subscribe list1 订阅list1 3.发布 ...