C#学习教程:Automapper – inheritance映射器不使用类型转换器分享


Automapper – inheritance映射器不使用类型转换器

不能一起使用Mapping Inheritance和TypeConverter。

我有这个代码:

/* BaseClassTypeConverter.cs */ public class BaseClassTypeConverter : ITypeConverter { public BaseClass Convert(ResolutionContext context) { if (context == null || context.IsSourceValueNull) return null; var src = (SourceClass)context.SourceValue; return new BaseClass() { CommonAttr = src.SourceAttr }; } } /* AutoMapperConfig.cs */ public static class AutoMapperConfig { public static void RegisterMappings() { AutoMapper.Mapper.Initialize(config => { config .CreateMap() .Include() .Include() .ForMember(dest => dest.CommonAttr, o => o.MapFrom(src => src.SourceAttr)); //.ConvertUsing(); // NOT WORKING config .CreateMap() .ForMember(dest => dest.Dummy, o => o.MapFrom(src => src.SourceAttr2)) .IncludeBase(); }); } } 

如您所见,我希望能够从TypeConverter类映射,因为我有一些更复杂的计算要做,而不仅仅是如上所述分配值。

当我使用类型转换器时,映射不起作用,但是当我删除ConvertUsing并使用ForMember的内联映射时,一切正常。

这是我缺少的东西?

PD。 我正在使用:AutoMapper:version =“4.2.1”,targetFramework =“net452”

不,你不能组合ConvertUsing和其他任何东西。 使用自定义类型转换器后,映射完全取决于您。 这就是为什么“ConvertUsing”返回“void”,这是一个信号,说“你完成了配置,谢谢你”。

但是,您可以使用ConstructUsing构建初始目标对象。 或者是自定义的AfterMap,它也是inheritance的。 只是没有ConvertUsing。

上述就是C#学习教程:Automapper – inheritance映射器不使用类型转换器分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/959755.html

发表评论

邮箱地址不会被公开。 必填项已用*标注