1.扁平化

对象 - 对象映射的一个常见用法是获取一个复杂的对象模型,并将其展开成一个更简单的模型。 您可以采取复杂的模型,如:

 1     public class Order
 2     {
 3         private readonly IList<OrderLineItem> _orderLineItems = new List<OrderLineItem>();
 4
 5         public Customer Customer { get; set; }
 6
 7         public OrderLineItem[] GetOrderLineItems()
 8         {
 9             return _orderLineItems.ToArray();
10         }
11
12         public void AddOrderLineItem(Product product, int quantity)
13         {
14             _orderLineItems.Add(new OrderLineItem(product, quantity));
15         }
16
17         public decimal GetTotal()
18         {
19             return _orderLineItems.Sum(li => li.GetTotal());
20         }
21     }
22
23     public class Product
24     {
25         public decimal Price { get; set; }
26         public string Name { get; set; }
27     }
28
29     public class OrderLineItem
30     {
31         public OrderLineItem(Product product, int quantity)
32         {
33             Product = product;
34             Quantity = quantity;
35         }
36
37         public Product Product { get; private set; }
38         public int Quantity { get; private set;}
39
40         public decimal GetTotal()
41         {
42             return Quantity*Product.Price;
43         }
44     }
45
46     public class Customer
47     {
48         public string Name { get; set; }
49     }

我们想把这个复杂的Order对象变成一个更简单的OrderDto,它只包含某个场景所需的数据:

1     public class OrderDto
2     {
3         public string CustomerName { get; set; }
4         public decimal Total { get; set; }
5     }

在AutoMapper中配置源/目标类型对时,配置程序会尝试将源类型上的属性和方法与目标类型上的属性相匹配。 如果对目标类型上的任何属性,方法或以“Get”为前缀的方法不存在源类型上,则AutoMapper会将目标成员名称拆分为单个单词(遵循帕斯卡拼写法约定)。

 1     // Complex model
 2
 3     var customer = new Customer
 4         {
 5             Name = "George Costanza"
 6         };
 7     var order = new Order
 8         {
 9             Customer = customer
10         };
11     var bosco = new Product
12         {
13             Name = "Bosco",
14             Price = 4.99m
15         };
16     order.AddOrderLineItem(bosco, 15);
17
18     // Configure AutoMapper
19
20     Mapper.Initialize(cfg => cfg.CreateMap<Order, OrderDto>());
21
22     // Perform mapping
23
24     OrderDto dto = Mapper.Map<Order, OrderDto>(order);
25
26     dto.CustomerName.ShouldEqual("George Costanza");
27     dto.Total.ShouldEqual(74.85m);

我们使用CreateMap方法在AutoMapper中配置类型映射。 AutoMapper只能映射它所知道的类型对,因此我们必须使用CreateMap显式地注册了源/目标类型对。 要执行映射,我们使用Map方法。

在OrderDto类型上,Total属性与Order上的GetTotal()方法匹配。 CustomerName属性与Order上的Customer.Name属性相匹配。 只要我们适当地命名目标属性,我们不需要配置单个属性匹配。



0.AutoMapper

1.扁平化

2.投影

3.配置验证

4.列表和数组

5.嵌套映射

6.自定义类型转换器

7.自定义值解析器

8.空替换

9.映射操作之前和之后

10.依赖注入

11.映射继承

12.可查询扩展(LINQ)

13.配置

14.条件映射

15.开放泛型

16.了解您的映射

时间: 2024-10-15 06:16:32

1.扁平化的相关文章

扁平化设计2.0

时至今日,扁平化已不再是流行一时的设计风潮,而是一种美学风格.扁平化大胆的用色,简洁明快的界面风格一度让大家耳目一新,当它对元素效果抛弃的如此彻底之际,它又将效果捡起来,改装成另一番模样,使得扁平化进化为扁平化2.0. 扁平化设计特质 对于扁平化的定义,依然没有一个固定范式,但概括起来有下面四个特征: 1)没有多余的效果,例如投影.凹凸或渐变等 2)使用简洁风格的元素和图标 3)大胆丰富且明亮的配色风格 4)尽量减少装饰的极简设计 扁平化所追随的细节依然不变,然而这些"规范"开始松懈了

扁平化设计的历史

[摘要]"扁平化设计"是一种设计风格术语,它抛弃任何能使得作品突显3D效果的特性. 如今一提到网站设计,就会不可避免地碰到"扁平化设计"(flat design)这个词.近几年扁平化设计趋势风生水起,也受到很多大公司的青睐. 但扁平化设计来源是哪里?为什么它风靡网站设计?在设计中,我们只有知道一种风格和技术的来源以及它背后的历史,我们在使用这种美学风格时才能更加得心应手.下面让我们追根溯源,了解扁平化设计的前世今生. 究竟什么是扁平化设计 对于没接触过的人来说,&q

你认为扁平化模式好还是树形结构好?

我认为对于小公司来说,扁平化的模式更好一些.由于小公司的规模比较小,公司内的员工不多,所需要的管理层次不多.扁平化模式的决策层和操作层之间的中间管理层次少,这可以使企业能够快速地将决策权延至企业生产.营销的最前线,从而为提高企业效率.而且由于公司规模小,管理部门之间的信息资源的交流.相互调用不会太多,这样可以是决策者集中更多的精力在企业的市场对策和企业发展的战略问题上. 对于大公司来说,树形结构会更好一些.大公司的规模比较大,所要做的项目比较多,如果一个人负责多个项目会造成项目完成效率不高.在树

怎样做出优秀的扁平化设计风格 PPT 或 Keynote 幻灯片演示文稿?

怎样做出优秀的扁平化设计风格 PPT 或 Keynote 幻灯片演示文稿? http://www.zhihu.com/question/21274267/answer/62857878

android扁平化ProgressBar--progressWheel

ProgressWheel是git是一个开源项目,为开发者提供一个扁平化的ProgressBar,并可对其进行深度定制 1,将ProgressWheel的源码拷贝到项目中 public class ProgressWheel extends View { // Sizes (with defaults) private int layout_height = 0; private int layout_width = 0; private int fullRadius = 100; privat

扁平化设计发展

[PConline 欣赏]现在说起网页.UI设计,都会谈论扁平化设计(Flat Design)这个概念,一些大型公司和组织在网页设计都将风格偏向了它,而iOS 7又推上了一个高峰. 在苹果与微软的青睐与推动下,扁平化设计日益盛行,但是很少有人知道扁平化设计这个概念由何而来?为什么将这个概念用在了网页设计上?对于设计的新概念来说,搞清楚一个风格和一项技术的历史背景很重要,因为在我们觉得是否采用这个新的设计概念的时候,对它来由的了解可以帮助我们做出更明智的决定. 到底什么是扁平化设计? 对于那些从来

扁平化设计

扁平化概念的核心意义是:去除冗余.厚重和繁杂的装饰效果.而具体表现在去掉了多余的透视.纹理.渐变以及能做出3D效果的元素,这样可以让“信息”本身重新作为核心被凸显出来.同时在设计元素上,则强调了抽象.极简和符号化. 例如:Windows.Mac OS.iOS.Android等操作系统的设计已经往“扁平化设计”发展.其设计语言主要有Material Design.Modern UI等. 扁平化的设计,尤其是手机的系统直接体现在:更少的按钮和选项,这样使得UI界面变得更加干净整齐,使用起来格外简洁,

[转]easyui tree 模仿ztree 使用扁平化加载json

原文地址:http://my.oschina.net/acitiviti/blog/349377 参考文章:http://www.jeasyuicn.com/demo/treeloadfilter.html 一.扩展原因 ztree使用了一种扁平化的数据加载方式,就是id(自身id),pid(父id)的方式,参考http://www.ztree.me/v3/demo.php#_102,于是扩展easyui tree 也使用这种亲民的方式: 二.基本方法 1,载入扩展文件 2,在JS中实例化TRE

扁平化设计的优势

目前,在市场上的视觉设计中,扁平化的设计的占比在持续上升,这其中究竟藏着有什么样的秘密,今天就来一起探讨一下吧. 首先,研究一样东西,我觉得都要从它的历史开始,因为可以了解它,并且清楚知道它的变化在哪里. 一.扁平化的开始和发展 在很多国内的人的心里,对扁平化的认识估计就是从微软的WINDOWS 8 和 WINDOWS PHONE 等界面开始,而后苹果的产品中也开始使用这样扁平化的视觉设计,由于微软和苹果产品在市场上的占比比较高,因此也一定程度上推动了整个移动端扁平化的设计进程. 二.扁平化的定