automapper

Automapper Not Mapping mapping properties

你说的曾经没有我的故事 提交于 2020-03-05 00:23:36
问题 I was working on Generics and I got stuck into weird issue. I am facing issue with AutoMapper-9 mapping. I have implemented ICollection but Automapper is not mapping the properties correctly. My code is CollectionBase class which is implementing ICollection public class CollectionBase<T> : ICollection<T> { ICollection<T> _items; public CollectionBase() { _items = new List<T>(); } protected CollectionBase(ICollection<T> collection) { // Let derived classes specify the exact type of ICollection

AutoMapper快速上手

我的梦境 提交于 2020-03-02 20:05:32
一.什么是AutoMapper AutoMapper是一个简单的对象映射框架(OOM),对象映射原理是把一种类型的输入对象转换为不同类型的输出对象,通俗讲就是通过一些约束讲一种类型中数据自动映射到另一数据类型中 二.AutoMapper的好处 以前的时候我们将DTO对象转换为Model对象或者将Model对象转换为DTO对象时,我们必须将每一个属性都手动映射 //源数据对象 var source = new Source { Id = 1, Name = "张三" }; //目标数据对象 var target = new Target { Id = source.Id, Name = source.Name }; 这样情况如果属性过多会导致浪费大量的时间在对象转换中,于是各种OOM框架应时而生,而AutoMapper便是其一,AutoMapper其优势在于易用性与强大型,AutoMapper除了基本的对象映射之外还可以对进行配置各种需要的映射关系(不同属性名称之间的映射,映射之间的类型转换,支持嵌套映射,支持泛型等),AutoMapper最新版本为6.2.2,而AutoMapper在6.2.0版本中又发生了一次巨大改变,使得开发者能更加简单的使用AutoMapper进行工作。下面是AutoMapper的一个简单示例。 //初始化AutoMapper Mapper

一起了解 .Net Foundation 项目 No.3

主宰稳场 提交于 2020-02-28 08:12:52
.Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧。 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译、如与原文存在出入,请以原文为准。 AutoMapper AutoMapper 是一款基于约定的从对象到对象的映射器。它用于解决对象间进行赋值时编写和测试枯燥乏味的代码。 利用简单的约定规则,AutoMapper 消除了成百上千的代码,这强化了开发者的 DTO 设计,使得其更加容易测试对象映射关系。 项目详情 官网地址 项目源码 项目许可证: MIT NuGet 项目联系人: Jimmy Bogard , Lucian Bargaoanu , and Tyler Carlson 相关链接 项目文档 参与贡献 笔者简评 单进程内的多层次结构设计出来之后,对象间映射几乎成为一个不可避免的问题。 直接使用 new 和 = 就能实现的问题,为何还要采用一个类库来解决呢? 软件开发不变的便是变化,原生的办法并不是不好写,而是改起来困难,特别需要进行字段改动和特殊功能的时候,此时,使用 AutoMapper 这样的类库可以省下不少麻烦。 当然,绝大多数的环境下使用 Profile 和 DynamicMap 几乎就能够满足需求。 但是也千万不要忽略研究 AutoMapper 提供的高级特性:对象扁平化、值工厂、Ioc 集成、映射启动时检查等等

如何在C#中克隆通用列表?

五迷三道 提交于 2020-02-26 15:02:14
我在C#中有一个通用的对象列表,并希望克隆列表。 列表中的项目是可复制的,但似乎没有选项可以执行 list.Clone() 。 有一个简单的方法吗? #1楼 使用AutoMapper(或您喜欢的任何映射库)进行克隆非常简单且易于维护。 定义您的映射: Mapper.CreateMap<YourType, YourType>(); 做魔术: YourTypeList.ConvertAll(Mapper.Map<YourType, YourType>); #2楼 您可以使用扩展方法: namespace extension { public class ext { public static List<double> clone(this List<double> t) { List<double> kop = new List<double>(); int x; for (x = 0; x < t.Count; x++) { kop.Add(t[x]); } return kop; } }; } 您可以使用其值类型成员克隆所有对象,例如,考虑以下类: public class matrix { public List<List<double>> mat; public int rows,cols; public matrix clone() { // create new

【5min+】 对象映射只有AutoMapper?试试Mapster

倾然丶 夕夏残阳落幕 提交于 2020-02-22 14:48:59
原文: 【5min+】 对象映射只有AutoMapper?试试Mapster 系列介绍 【五分钟的dotnet】是一个利用您的碎片化时间来学习和丰富.net知识的博文系列。它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.net知识等等。 5min+不是超过5分钟的意思,"+"是知识的增加。so,它是让您花费5分钟以下的时间来提升您的知识储备量。 正文 一谈到如何在.Net中进行对象映射,可能大部分同学都会脱口而出:“使用AutoMapper!”。 是的,AutoMapper 是一个非常成熟的 对象映射器 。截至到写这篇文章,您能在Nuget上下载到的AutoMapper包的版本为:v9.0.0,而对应的 Github 的 star 已经高达7K。 对了,谈到AutoMapper就不得不谈起它的作者(之一):“JIMMY BOGARD”。也许您没有听过这个名字,但是您一定听过他的另一个作品: MediatR (在微软的官方示例EShop中也使用了MediatR)。同时,“JIMMY BOGARD” 也是提出“将领域事件附加在聚合根”上的人,为领域驱动设计(DDD)做出了很大的贡献。在微软官方文档中,您可以看到该处提及到了“JIMMY BOGARD”: 好吧,优秀的人总是优秀😭。还是回到今天的正文,对象映射工具。当然

【5min+】 对象映射只有AutoMapper?试试Mapster

时光总嘲笑我的痴心妄想 提交于 2020-02-21 19:17:29
系列介绍 【五分钟的dotnet】是一个利用您的碎片化时间来学习和丰富.net知识的博文系列。它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.net知识等等。 5min+不是超过5分钟的意思,"+"是知识的增加。so,它是让您花费5分钟以下的时间来提升您的知识储备量。 正文 一谈到如何在.Net中进行对象映射,可能大部分同学都会脱口而出:“使用AutoMapper!”。 是的,AutoMapper 是一个非常成熟的 对象映射器 。截至到写这篇文章,您能在Nuget上下载到的AutoMapper包的版本为:v9.0.0,而对应的 Github 的 star 已经高达7K。 对了,谈到AutoMapper就不得不谈起它的作者(之一):“JIMMY BOGARD”。也许您没有听过这个名字,但是您一定听过他的另一个作品: MediatR (在微软的官方示例EShop中也使用了MediatR)。同时,“JIMMY BOGARD” 也是提出“将领域事件附加在聚合根”上的人,为领域驱动设计(DDD)做出了很大的贡献。在微软官方文档中,您可以看到该处提及到了“JIMMY BOGARD”: 好吧,优秀的人总是优秀😭。还是回到今天的正文,对象映射工具。当然,对于AutoMapper大家可能再熟悉不过了,而且它的知名度和热度也居高不下

AutoMapper for a list scenario only seems to repeat mapping the first object in the list

时光毁灭记忆、已成空白 提交于 2020-02-20 16:47:46
问题 I am developing an MVC 3 application and am using AutoMapper to move data between my ViewModels and my entities. I have a scenario where I need to move data between two lists. For some strange reason, AutoMapper seems to only copy the first object from the source object and then seems to copy the same object n times over to the destination list. For example, say you have 2 lists, source contains six entity items and destination contains 0 items as it was just instantiated. The item at

C#常用开源框架

守給你的承諾、 提交于 2020-02-10 16:45:24
01,Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json,通过JsonSerializer可以序列化你的.Net对象。让你轻松实现.Net中所有类型(对象,基本数据类型 等)和Json的转换。 02,Math.NET http://www.mathdotnet.com/ Math.NET的目标是为提供一款自身包含清晰框架的符号运算和数学运算/科学运算,它是C#开发的开源类库。Math.NET含了一个支持线性代数的解析器,分析复杂微分,解方程等等功能。 03,Faker.Net https://github.com/jonwingfield/Faker.Net 开发的时候是不是为测试数据烦恼?Faker.Net可以非常方便帮你生成大批量测试数据。例如人员表里面的姓名、性别什么的。 04,Html Agility Pack http://htmlagilitypack.codeplex.com/ Html Agility Pack 是CodePlex 上的一个开源项目。它提供了标准的DOM API 和XPath 导航--即使 HTML 不是适当的格式!HTML Agility Pack 搭配

AutoMapper之自定义解析

浪子不回头ぞ 提交于 2020-02-06 06:47:50
自定义解析 4.自定义解析 AutoMapper可以通过名称匹配等规则进行对象的映射,但是在实际的项目中,只是这样是远远不够的,比说我们需要名称不同的字段进行映射,或者需要再加一些逻辑处理。AutoMapper为此提供一种方案:自定义解析。 4.1示例 我们先对类Source中Value1和Value2进行求和运算,再映射到类Destination中Total。 public class Source { public int Value1 { get; set; } public int Value2 { get; set; } } public class Destination { public int Total { get; set; } } AutoMapper提供了接口IValueResolver实现自定义解析,其中包含有源类型,源对象,目标类型,目标对象等信息。 //IValueResolver接口 public interface IValueResolver<in TSource, in TDestination, TDestMember> { TDestMember Resolve(TSource source, TDestination destination, TDestMember destMember, ResolutionContext

AutoMapper之集合和数组映射

丶灬走出姿态 提交于 2020-02-06 06:44:29
9.集合和数组映射 在项目中,集合和数组使用的很多的,继续下来就讲讲他们的映射,很简单。 /// <summary> /// 源对象 /// </summary> public class Source { public int Value { get; set; } public string Text { get; set; } } /// <summary> /// 目标对象 /// </summary> public class Destination { public int Value { get; set; } public string Text { get; set; } } /// <summary> /// 集合和数组映射测试类 /// </summary> [TestClass] public class ListAndArrayMaping { [TestMethod] public void ListMapingTest() { //初始化映射 和单个对象的映射一样 Mapper.Initialize(cfg => cfg.CreateMap<Source, Destination>()); var srcList = new List<Source> { new Source { Value = 5,Text="Five" } }; /