AutoMapper官方文档(九)【列表和数组】

AutoMapper 使用手册以及扩展 可以看到,映射后,dto 中两个元素的类型,一个是 EmployeeDto,一个是 EmployeeDto2,即实现了父类映射到父类,子类映射到子类。/// 数据源的成员变量的命名规则。/// 数据源的成员变量的命名规则。/// new PascalCaseNamingConvention() 帕斯卡命名规则(每个单词的首字母大写) 阅读详情

AutoMapper只需要配置元素类型,而不是任何可能使用的数组或列表类型。 例如,我们可能有一个简单的源和目标类型:

public class Source
{
    public int Value { get; set; }
}

public class Destination
{
    public int Value { get; set; }
}

所有基本的泛型集合类型都被支持:

Mapper.Initialize(cfg => cfg.CreateMap<Source, Destination>());

var sources = new[]
    {
        new Source { Value = 5 },
        new Source { Value = 6 },
        new Source { Value = 7 }
    };

IEnumerable<Destination> ienumerableDest = Mapper.Map<Source[], IEnumerable<Destination>>(sources);
ICollection<Destination> icollectionDest = Mapper.Map<Source[], ICollection<Destination>>(sources);
IList<Destination> ilistDest = Mapper.Map<Source[], IList<Destination>>(sources);
List<Destination> listDest = Mapper.Map<Source[], List<Destination>>(sources);
Destination[] arrayDest = Mapper.Map<Source[], Destination[]>(sources);

具体而言,支持的源集合类型包括:

    IEnumerable
    IEnumerable<T>
    ICollection
    ICollection<T>
    IList
    IList<T>
    List<T>
    Arrays

对于非泛型可枚举类型,仅支持未映射的可指定类型,因为AutoMapper将无法“猜测”您尝试映射的类型。 如上例所示,没有必要显式配置列表类型,只有它们的成员类型。

映射到现有集合时,首先清除目标集合。 如果这不是你想要的,看看AutoMapper.Collection。

集合中的多态元素类型

很多时候,我们的源和目标类型都可能有一个类型的层次结构。 AutoMapper支持多态数组和集合,如果找到,则使用派生的源/目标类型。

public class ParentSource
{
    public int Value1 { get; set; }
}

public class ChildSource : ParentSource
{
    public int Value2 { get; set; }
}

public class ParentDestination
{
    public int Value1 { get; set; }
}

public class ChildDestination : ParentDestination
{
    public int Value2 { get; set; }
}

AutoMapper仍然需要显式配置子映射,因为AutoMapper不能“猜测”要使用的特定子目标映射。 以下是上述类型的示例:

Mapper.Initialize(c=> {
    c.CreateMap<ParentSource, ParentDestination>()
         .Include<ChildSource, ChildDestination>();
    c.CreateMap<ChildSource, ChildDestination>();
});

var sources = new[]
    {
        new ParentSource(),
        new ChildSource(),
        new ParentSource()
    };

var destinations = Mapper.Map<ParentSource[], ParentDestination[]>(sources);

destinations[0].ShouldBeInstanceOf<ParentDestination>();
destinations[1].ShouldBeInstanceOf<ChildDestination>();
destinations[2].ShouldBeInstanceOf<ParentDestination>();
AutoMapper.Collection:AutoMapper支持通过等效性更新现有集合 AutoMapper.Collection 增加了将集合映射到现有集合的功能,而无需重新创建集合对象。 将基于源定义集合和目标集合的集合的常规项目类型之间的用户定义的对等关系,添加/更新/删除现有集合对象中的项目。 如何添加到AutoMapper? 配置时调用AddCollectionMappers Mapper.Initialize(cfg => { cfg.AddCollectionMappers(); // Configuration code }); 将新的IObjectMapper对象添加到主映射列表中。 在两个类别之间添加等效项 使用从IMappingExpression类扩展的EqualityComparison来向对象添加等效项。 cfg.CreateMap<OrderItemDTO>().EqualityComparison 立即下载

相关推荐

保姆级教程:手把手教你为裕泰微YT8521 PHY芯片编写Linux设备树(DTS)节点与驱动

本文提供了一份详细的保姆级教程,手把手教你为裕泰微YT8521 PHY芯片编写Linux设备树(DTS)节点与驱动。从基础配置到RGMII接口的特殊设置,再到驱动开发的关键步骤和调试技巧,帮助开发者快速掌握PHY芯片的移植与开发。

weixin_33734785的博客 332

2.1配置(AutoMapper官方文档翻译)

automapper configuration

yan_yu_lv_ji的博客 653

IOS APP上架被拒 4.3(a) - Design - Spam,成功

成功解决IOS APP上架被拒 4.3(a) - Design - Spam,本篇博客记录了详细过程

qq_40147106的博客 6902

AutoMapper官方文档(一)【入门】

什么是AutoMapper?AutoMapper是一个对象与对象的映射器。对象-对象映射通过将一种类型的输入对象转换为不同类型的输出对象来工作。让AutoMapper感兴趣的是,它提供了一些有趣的约定,从而弄清楚如何将类型A映射到类型B.只要类型B遵循AutoMapper建立的约定,映射两种类型几乎就是零配置。为什么使用AutoMapper?映射代码很无聊。测试映射代码更无聊。 AutoMapper

极客神殿 8244

论文学习:Towards Automated Infographic Design:Deep Learning-based Auto-generation of Extensible Timeline

title: “Towards Automated Infographic Design:Deep Learning-based Auto-generation of Extensible Timeline” tags: [“论文评述”, “报告”] date: 2019-08-22 author: 叶慧 mathjax: true 论文:Towards Automated Infograph...

xiaoyehahaha的博客 731

状态机设计与实现( stm32小车避障为例)

本文以STM32小车避障为例,介绍了状态机设计与实现方法。首先阐述了状态机的事件驱动特性、清晰结构和易扩展优势,并给出硬件组成框架。核心实现部分展示了状态枚举定义、状态转移图和主循环框架,通过switch-case结构实现状态切换。关键状态示例包括前方扫描和转向决策逻辑,通过传感器数据驱动状态转移。总结指出状态机设计需定义枚举状态、实现状态函数、使用switch跳转并更新全局状态。文章最后声明内容为学习笔记,欢迎读者指正交流。全文结构清晰,代码示例具体,为嵌入式系统状态机设计提供了实用参考。

2302_80219536的博客 1046

1.1入门指南(AutoMapper官方文档翻译)

AutoMapper是一个对象-对象映射器。对象-对象映射的工作原理是将一种类型的输入对象转换为不同类型的输出对象。AutoMapper的有趣之处在于,它提供了一些有趣的约定,将如何将类型A映射到类型B的繁琐工作解决掉。只要类型B遵循AutoMapper的既定约定,映射两个类型几乎不需要任何配置。

yan_yu_lv_ji的博客 919

基于YOLOv8的违规抽烟/打电话检测系统:从数据集构建到部署实战

模型优点缺点精度高速度慢(5 FPS)SSD速度快小目标检测差YOLOv5平衡性好官方支持停止YOLOv8最新、最快、最准需要PyTorch环境YOLOv8相比前代:骨干网络升级(C2f模块)无锚框检测(Anchor-Free)动态任务对齐分配(TaskAlignedAssigner)支持分类/检测/分割/姿态估计。

YOLO 97

C#-对象映射器(一)-AutoMapper映射帮助类

一、AutoMapper简介1、什么是AutoMapper(官方文档地址:https://github.com/MapsterMapper/Mapster)  Mapster是一个高性能的用于对象映射的类库,同类型的产品还有AutoMapper。它提供了一系列的API和工具,以下为几个重要的类和接口: IMapping接...

weixin_30146085的博客 798

如何懂固高卡以及滚筒轴+平移轴配合运动?

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 842

Alist/Openlist 的 WebDAV 老是连不上?别再乱试了,这才是标准答案!(1Panel如何使用Alist/Openlist作为备份账号)

😫服务器硬盘告急,想用 Alist/Openlist 的 WebDAV 备份却屡屡失败?别慌!本文带你揭秘正确的连接地址和权限配置,手把手教你搞定 1Panel 备份设置,让你的网盘秒变备份仓库!

XiaoqiangClub的博客 5569

使用AutoMapper将复杂对象映射到对象列表

在这篇文章中,我们将重点介绍将复杂对象转换为对象列表。

寒冰屋的专栏 1791

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

AutoMapper入门

AutoMapper 是一个 .NET 类库,它能自动在两个类型之间做映射,尤其是当这些类型拥有相似属性时。它减少了手动编写的重复性劳动。set;set;set;set;set;set;可以直接通过 AutoMapper 在这两者之间做转换,而无需显式赋值。

R3333355726856的博客 1672

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

automapper自动创建映射_AutoMapper复杂对象映射 – 映射列表

我有以下课程.域模型由实体框架创建,我使用的是POCO.public class Customer{public int Id { get; set; }public string Name { get; set; }public DateTime CreatedDate{ get; set; }public DateTime ModifiedDate{ get; set; }public vir...

weixin_36207513的博客 805

.net core中使用Automapper

安装所需的包 Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection 配置AutoMapper public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(Com...

Jonny的博客 4315

AutoMapper的使用

为 AutoMapper 提供了一个非常实用的扩展,允许你在查询数据库时直接进行映射,避免了额外的数据加载和后续的转换。它尤其适用于与 Entity Framework 等 ORM 工具结合使用,能够在查询时直接映射数据模型,优化性能和代码可读性。如果你的项目涉及到数据访问并且使用了 AutoMapper,是一个非常有用的工具。

情绪不稳定的98年程序员 1154

[.NET] - 初步认识AutoMapper 初步认识AutoMapper AutoMapper

初步认识AutoMapper 前言 手动映射 使用AutoMapper 创建映射 Conventions 映射到一个已存在的实例对象 前言 通常在一个应用程序中,我们开发人员会在两个不同的类型对象之间传输数据,通常我们会用DTOs(数据传输对象),View Models(视图模型),或者直接是一些从一个service或者Web API的一些请求或应答对象。一个常见的需要使用数据传输对象的情况是,我...

ishuahua的博客 1804

【AutoMapper官方文档】DTO与Domin Model相互转换(上)

【AutoMapper官方文档】DTO与Domin Model相互转换(上) 原文:【AutoMapper官方文档】DTO与Domin Model相互转换(上)写在前面   AutoMapper目录: 【AutoMapper官方文档】DTO与Domin Model相互转换(上) 【AutoMapper官方文档】DTO与Domin Mo...

weixin_30871293的博客 157

automapper java 有什么_AutoMapper简介

先说说DTODTO是个什么东东?DTO(Data Transfer Object)就是数据传输对象,说白了就是一个对象,只不过里边全是数据而已。为什么要用DTO?1、DTO更注重数据,对领域对象进行合理封装,从而不会将领域对象的行为过分暴露给表现层2、DTO是面向UI的需求而设计的,而领域模型是面向业务而设计的。因此DTO更适合于和表现层的交互,通过DTO我们实现了表现层与领域Model之间的解耦...

weixin_39580041的博客 533

AutoMapper官方文档(二)【升级指南】

初始化 您现在必须使用Mapper.Initialize或new MapperConfiguration()来初始化AutoMapper。如果您希望保持静态使用,请使用Mapper.Initialize。 如果你有很多的Mapper.CreateMap调用,把它们移动到一个Profile,或者Mapper.Initialize,在启动时调用一次。 例如在这里看到。 Profile...

dichu8371的博客 311

java automapper 使用_AutoMapper使用

前言:前篇搭建了下WCF的代码,就提到了DTO的概念,对于为什么要有这么一个DTO的对象,上章可能对于这点不太详尽,在此不厌其烦再来提提它的作用:从安全上面考虑,领域Model都带有领域业务,让Client端引用Domain Model就意味着Client端可以绕过应用层直接完成业务逻辑的调用,这样是一种不安全的机制。从对象传递效率上面考虑,领域Model带有业务,而这些业务一般对于UI层是没有意...

weixin_32829077的博客 1052

java automapper 使用_AutoMapper入门使用

AutoMapper入门使用在应用开发的过程中,首先要了解整个系统中各个系统的组件的作用,然后了解系统的工作流(workflow),最后需要梳理一遍数据流(dataflow),而在整理数据流的过程中,数据的转化常常是最难理解写起来相当枯燥乏味的部分,AutoMapper的功能就是实现映射一个对象到另一个对象的自动化工具,最常见的就是DTO (Data Transfer Object)与MO(Mod...

weixin_35034536的博客 870

AutoMapper6扩展

简介 很多时候我们使用AutoMapper的时候,都需要进行一个配置才可以使用Mapper.Map<Source,Target>(entity);。如果不进行配置则会报错。 如果实体过多,有时候会忘记是否有配置,只有运行的时候才会发现这个BUG。 源代码地址 源码地址 测试案例地址 源代码 该扩展基于AutoMapper 6.x版本,因此需要从Nuget下载相应的包。 该...

dlfryby306482969的博客 233

Getting started · AutoMapper/AutoMapper Wiki

Getting started · AutoMapper/AutoMapper Wiki Getting started · AutoMapper/AutoMapper WikiGetting started New Page Edit Page Page Hi...

146
上一篇: AutoMapper官方文档(八)【内联映射】
下一篇: AutoMapper官方文档(十)【嵌套映射】
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值