首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Automapper忽略子类映射中的基类属性的问题

当使用 Automapper 进行对象映射时,如果需要忽略子类映射中的基类属性,可以使用以下方法:

  1. 使用 ForSourceTypeForAllMembers 方法配置映射规则:
代码语言:csharp
复制
Mapper.Initialize(cfg =>
{
    cfg.CreateMap<BaseClass, DestinationClass>()
        .ForSourceType<SubClass>()
        .ForAllMembers(opt => opt.Ignore());
});
  1. 使用 Include 方法将基类映射规则包含在子类映射规则中,并使用 ForAllMembers 方法忽略基类属性:
代码语言:csharp
复制
Mapper.Initialize(cfg =>
{
    cfg.CreateMap<BaseClass, DestinationClass>()
        .ForMember(dest => dest.Property, opt => opt.Ignore());

    cfg.CreateMap<SubClass, DestinationClass>()
        .IncludeBase<BaseClass, DestinationClass>()
        .ForAllMembers(opt => opt.Ignore());
});
  1. 使用 ConvertUsing 方法自定义转换器,在转换器中忽略基类属性:
代码语言:csharp
复制
Mapper.Initialize(cfg =>
{
    cfg.CreateMap<BaseClass, DestinationClass>()
        .ConvertUsing(src =>
        {
            var dest = new DestinationClass();
            // 忽略基类属性
            return dest;
        });
});

这样,在使用 Automapper 进行对象映射时,就可以忽略子类映射中的基类属性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 AutoMapper 自动映射模型时,处理不同模型属性缺失问题

使用 AutoMapper 可以很方便地在不同模型之间进行转换而减少编写太多转换代码。不过,如果各个模型之间存在一些差异的话(比如多出或缺少一些属性),简单配置便不太行。...本文帮助你解决这个问题。...关于 AutoMapper 系列文章: 使用 AutoMapper 自动在多个数据模型间进行转换 使用 AutoMapper 自动映射模型时,处理不同模型属性缺失问题 属性增加或减少 前面我们所有的例子都是在处理要映射类型其属性都一一对应情况...然而,如果所有的属性都是一样,那我们为什么还要定义多个属性类型呢(Attribute 不一样除外)。正常开发情况下这些实体类型都会是大部分相同,但也有些许差异情况。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

39210

AutoMapper快速上手

可以看到我们只需要简单使用便可以完成两个对象之间属性映射,开发中极大省去了枯燥属性转换....三,AutoMapper性能    AutoMapper做为一个被广泛使用OOM框架,其底层使用是表达式树来进行映射,所以在性能方面还是比较突出,下面是我做一个性能测试 //初始化AutoMapper...可以看到映射了1万个对象只花费了191毫秒.虽然说对象属性越多映射所下所花费时间会越长,但是这个性能已经极为OK了 四.AutoMaper使用 AutoMapper作为一个易用性极强并且简便OOM...() //ForMember可以配置一系列配置信息 //参数1:目标类型属性表达式 //参数2:执行操作选择 AutoMapper定义了一系列配置选择供开发者使用...11.无须配置Helper 此类只能简单进行配置,无法实现复杂变化,不过一般使用则无需配置【此类出处:https://home.cnblogs.com/u/xiadao521/】 /// <summary

4.1K30

浅入 AutoMapper

目录 浅入 AutoMapper AutoMapper 基本使用 映射配置 映射检查 性能 Profile 配置 依赖注入 表达式与 DTO 浅入 AutoMapper 在 Nuget 搜索即可安装,目前笔者使用版本是...); 这个 IMapperConfigurationExpression 是一个链式函数,可以为映射中每个字段定义逻辑。...默认情况,TestA 跟 TestB 中字段不太一致的话,可能有些地方容易造成忽略,开发者可以使用检查器去检查。...在提高灵活性等情况下,会牺牲一些性能,主要不是大量计算情况下,并不会有太大性能问题。...一种映射定义一个 Profile ?这样太浪费空间了;一个模块定义一个 Profile ?这样太杂了。不同程序有自己架构,按照项目架构选择 Profile 粒度就好。

1.4K20

Python 基础(十四):错误和异常

我们编写程序通常使用开发工具编写,比如:我使用 Pycharm 工具编写 Python 程序,像这种语法错误,在编写程序时,编译器就会检测出来并提示我们,因此,我们编写好程序几乎不会出现这种问题。...,BaseException为所有异常,其下面分为:SystemExit、KeyboardInterrupt、GeneratorExit、Exception 四异常,Exception 为所有非系统退出异常...常规错误 StopIteration 迭代器没有更多值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常 ArithmeticError...断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误 IOError 输入/输出操作失败...) KeyError 映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命) NameError 未声明/初始化对象 (没有属性) UnboundLocalError

1.4K20

一步一步创建ASP.NET MVC5程序(五)

开发人员需要作事则是通过AutoMapper配置两个实体对象之间一些映射关系。 为什么使用AutoMapper? 映射代码是无聊。测试映射代码更无聊。...AutoMapper提供了一些简单配置,还有一些简单映射测试。真正问题可能是“为什么使用对象-对象映射呢”?...().Execute(); } } } 到此,AutoMapper安装、配置就基本完成了,接下来我们将学习在WEB项目[TsBlog.Frontend]控制器操作中如何使用AutoMapper...使用AutoMapper 1.打开WEB项目[TsBlog.Frontend],添加对TsBlog.ViewModel引用。.../tag/v1.5 本文学习到此结束,本系列未完待续,我们下期再见…… 如果你喜欢Rector本系列文章,请为我点个大大赞,以支持Rector在后续写作中更有(激)情,哈哈。。。

1.7K100

从壹开始前后端分离【 .NET Core2.2 +Vue2 】框架之十二 、十三:DTOs(数据传输对象)

Name属性值,然后再赋值给BookViewModelAuthor属性,这样看起来行通,但是想一想,如果打算在以后开发中把Name拆分成两个-FisrtName和LastName,我天呐!...只需一键操作,就能一劳永逸,解决所有问题,然后通过依赖注入,快速使用:        //AutoMapper自动映射 //Mapper.Initialize(cfg => cfg.CreateMap...以上这些大家简单看看原理即可,意思大家肯定都懂,下边开始讲解如何使用 3、引入 AutoMapper 相关包 在Blog.Core.Services项目中引用Nuget包,AutoMapper 和...配置放在别的层(比如Service层), 如果没解耦的话,可以services.AddAutoMapper(),参数留空,AutoMapper会从所有引用程序集里找继承Profile,如果解耦了...那当然很方便啦,要是一个复杂,比如属性名字不一样,或者说有子类等嵌入型咋办?

47620

C# 在定义好方法让子类继承接口就能实现

在 C# 里面,接口定义只需要里面存在和接口声明相同方法或属性就可以,而存在方法或属性是在子类定义还是里面定义都无所谓。...通过这样方法可以在里面添加一些辅助方法,而这些方法默认不给子类开启,除非子类继承了接口 在定义方法,如果在子类继承接口里面声明方法刚好和定义相同,那么子类可以不需要再次定义。...在可以判断当前自己类型是否继承了接口 这个方法用在里面期望在特定代码里面给子类暴露一些内部方法,但是又不能让子类随意调用。...或者预设了一些方法,这些方法存在性能或其他问题,只有子类声明自己需要这个功能时候才被调用 内部方法隐藏 在里面有一些内部方法,默认不让子类使用,但只有某些特殊子类情况才能被使用。...,同时因为子类继承了预期接口而能使用 这就是通过在里面定义好方法和定义好代码逻辑,只要子类继承接口才能实现

52520

Python异常

略 异常对象 Python异常是内置经典Exception子类实例 为了向后兼容,Python还允许使用字符串或任何经典实例 Python2.5之后,Exception是BaseException...继承新式子类 Python自身引发所有异常都是Exception子类实例 大多标准异常都是由StandardError派生,其有3个抽象子类 ArithmeticError 由于算术错误而引发异常...OverflowError,ZeroDivision,FloatingPointError LookupError 容器在接收一个无效键或索引时引异常 IndexError,keyError...EnviromentError 由于外部原因而导致异常 IOError,OSError,WindowsError 标准异常 AssertionError 断言语句失败 AttributeError...): pass 标准库中使用其它异常 Python 标准库中许多模块都定义了自己异常,如socket中socket.error 等同于自定义异常 assert语句用于在程序中引入调式代码

2.4K90

C++强制类型转换

:将派生指针或引用转化为指针或引用 dynamic_cast   (1)执行派生指针或引用与指针或引用之间转换。   ...const_cast   (1)去除const常量属性,使其可以修改 reinterpret_cast   仅仅是复制n1比特位到d_r, 没有进行必要分析.interpret_cast是为了映射到一个完全不同类型意思...我们映射到类型仅仅是为了故弄玄虚和其他目的,这是所有映射中最危险。(这句话是C++编程思想中原话。...我们映射到类型仅仅是为了故弄\ 玄虚和其他目的,这是所有映射中最危险。...&c)); //前两个输出值是相同,最后一个则会在原基础上偏移4个字节,这是因为static_cast计算了父子类指针转换偏移量,\ 并将之转换到正确地址(c里面有m_a,m_b

1.3K10

Python3 常见错误和异常处理

\ KeyboardInterrupt 用户中断执行(通常是输入^C) 用户按下Ctrl-C(或者Delete)终止一个正在运行程序时,会产生,重新运行即可 Exception 常规错误 \...所有数值计算错误 \ FloatingPointError 浮点计算错误 这个错误由导致错误浮点操作产生,前提是已经打开了浮点异常控制(fpectl),启用fpectl时,要求编译解释器提供...LookupError 无效数据查询 \ IndexError 序列中没有此索引(index) 如果索引超出范围,就会产生IndexError KeyError 映射中没有这个键 如果没有找到一个值作为字典键...NotImplementedError 尚未实现方法 用户自定义可能产生NotImplementedError,来指示一个方法或者行为需要子类定义 SyntaxError Python 语法错误...UnicodeError Unicode 相关错误 ValueError一个子类,出现Unicode问题时产生 UnicodeDecodeError Unicode 解码时错误 \ UnicodeEncodeError

1.5K20

ABP入门系列(4)——创建应用服务

(通过继承该接口,ABP会自动帮助依赖注入) ABP为IApplicationService提供了默认实现ApplicationService,该提供了方便日志记录和本地化功能。...Id属性简单。...四、使用AutoMapper自动映射DTO与实体 1,简要介绍AutoMapper 开始之前,如果对AutoMapper不是很了解,建议看下这篇文章AutoMapper小结。...AutoMapper使用步骤,简单总结下: 创建映射规则(Mapper.CreateMap();) 类型映射转换(Mapper.Map<source,destination...四、创建统一入口注册AutoMapper映射规则 如果在映射规则既有通过特性方式又有通过代码方式创建,这时就会容易混乱不便维护。 为了解决这个问题,统一采用代码创建映射规则方式。

1.6K70

Python异常概念介绍以及处理

raise语句抛出一个指定异常,我们可以使用或实例参数调用raise语句引发异常。...当创建一个模块有可能抛出多种不同异常时,一种通常做法是为这个包建立一个基础异常,然后基于这个基础为不同错误情况创建不同子类: class Error(Exception): """Base...常规错误 StopIteration 迭代器没有更多值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常 ArithmeticError...断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误 IOError 输入/输出操作失败...) KeyError 映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命) NameError 未声明/初始化对象 (没有属性) UnboundLocalError

58010

01-EF Core笔记之创建模型

忽略属性 modelBuilder.Entity() .Ignore(b => b.LoadedFromDatabase); 如果一个属性或类型不在实体中,但是又想包含在数据库映射中时...继承 关于继承关系如何在数据库中呈现,目前有三种常见模式: TPH(table-per-hierarchy):一张表存放子类所有列,使用discriminator列区分类型,目前EF Core...仅支持该模式 TPT(table-per-type ):子类不在同一个表中,子类对应表中仅包含主键和扩展字段,目前EF Core不支持该模式 TPC(table-per-concrete-type...):子类不在同一个表中,子类中包含所有字段,目前EF Core不支持该模式 EF Core仅支持TPH模式,子类数据将存储在同一个表中。...使用有参构造函数需要注意: 参数名应与属性名字、类型相匹配 如果参数中不具有所有字段,则在调用构造函数完成后,对未包含字段进行赋值 使用懒加载时,构造函数需要能够被代理访问到,因此需要构造函数为public

3K20

《流畅Python》第十二章学习笔记

小结 直接子类化内置类型容易出错,因为内置类型方法通常会忽略用户覆盖方法。 不要子类化内置类型,用户自己定义应该继承collectiions模块中。...这个顺序叫方法解析顺序「Method Resolution Order,MRO」 都有一个名为__mro__属性,它值是一个元祖,按照方法解析顺序列出各个超,从当前一直向上,直到object...继承重用代码是实现细节,通常可以换用组合和委托模式 使用抽象显式表示接口 创建abc.ABC或其他抽象子类 通过混入重用代码 混入绝对不能实例化,而且具体不能只继承混入。...因为在Python中没有把声明为混入正规方法,所以强烈推荐在名称中加入Mixin后缀 抽象可以作为混入,反过来则不成立 抽象可以实现具体方法,所以也可以作为混入使用。...不要子类化多个具体 具体中除了这一个具体超之外,其余都是抽象或者混入。

42310

python基础学习15----异常处理

ImportError 无法引入模块或包;基本上是路径问题或名称错误 IndentationError 语法错误(子类) ;代码没有正确对齐 IndexError 下标索引超出序列边界,比如当x只有三个元素...,导致你以为正在访问它 ValueError 传入一个调用者不期望值,即使值类型是正确 其他异常: Exception可以捕获任意异常 BaseException 所有异常 SystemExit...生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常 ArithmeticError 所有数值计算错误 FloatingPointError...映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命) NameError 未声明/初始化对象 (没有属性) UnboundLocalError...警告 DeprecationWarning 关于被弃用特征警告 FutureWarning 关于构造将来语义会有改变警告 OverflowWarning 旧关于自动提升为长整型

1.6K10

Python内置异常类型全面汇总

内置异常 在 Python 中,所有异常必须为一个派生自 BaseException 实例。 通过子类化创建两个不相关异常永远是不等效,既使它们具有相同名称。...下列异常主要被用作其他异常。 BaseException: 所有异常 Exception(重点掌握) 所有内置非系统退出异常都派生自此类。 所有用户自定义异常也应当没打算自此类。...LookupError 此用于派生当映射或序列所使用键或索引无效时引发异常: IndexError, KeyError 内置异常层次结构 BaseException 所有异常...用户代码生成警告 +-- FutureWarning 有关已弃用功能警告 +-- ImportWarning 模块导入时可能出错警告 +-- UnicodeWarning...与Unicode相关警告 +-- BytesWarning bytes和bytearray相关警告 +-- ResourceWarning 与资源使用相关警告

1.5K10

【Python3之异常处理】 转

AttributeError 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x IOError 输入/输出异常;基本上是无法打开文件 ImportError 无法引入模块或包;基本上是路径问题或名称错误...常规错误 StopIteration 迭代器没有更多值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常...导入模块/对象失败 LookupError 无效数据查询 IndexError 序列中没有此索引(index) KeyError 映射中没有这个键 MemoryError...Unicode 编码时错误 UnicodeTranslateError Unicode 转换时错误 Warning 警告 DeprecationWarning 关于被弃用特征警告...问题一: 使用if方式我们只为第一段代码加上了异常处理,针对第二段代码,你得重新写一堆if,elif等 而这些if,跟你代码逻辑并无关系,可读性差 问题二: 第一段代码和第二段代码实际上是同一种异常

1.2K20
领券