美文网首页.NETdotNET
06.AutoMapper 之内联映射(Inline Mappi

06.AutoMapper 之内联映射(Inline Mappi

作者: 做人生的CEO | 来源:发表于2019-01-04 07:18 被阅读5次

内联映射(Inline Mapping)

AutoMapper在 6.2 以上版本将动态创建类型映射。 当第一次调用Mapper.Map时,AutoMapper将创建类型映射配置并编译映射计划。 之后再调用将使用已编译的映射。

内联配置

要配置内联映射,请参考以下例子:

var source = new Source();

var dest = Mapper.Map<Source, Dest>(source, opt => opt.ConfigureMap().ForMember(dest => dest.Value, m => m.MapFrom(src => src.Value + 10)));

您可以使用本地函数使配置更容易阅读:

var source = new Source();

void ConfigureMap(IMappingOperationOptions<Source, Dest> opt) {
    opt.ConfigureMap()
       .ForMember(dest => dest.Value, m => m.MapFrom(src => src.Value + 10))
};

var dest = Mapper.Map<Source, Dest>(source, ConfigureMap);

您还可以在此内联映射中获取和使用运行时的值:

int valueToAdd = 10;
var source = new Source();

void ConfigureMap(IMappingOperationOptions<Source, Dest> opt) {
    opt.ConfigureMap()
       .ForMember(dest => dest.Value, m => m.MapFrom(src => src.Value + valueToAdd))
};

var dest = Mapper.Map<Source, Dest>(source, ConfigureMap);

内联验证

第一次使用映射时,AutoMapper 将使用默认验证配置来验证映射(目标成员必须全部被映射)。之后调用映射将跳过验证。这可确保安全地映射对象。

在执行每一个映射时根据配置的验证成员列表来决定验证源、目标还是不验证:

var source = new Source();

var dest = Mapper.Map<Source, Dest>(source, opt => opt.ConfigureMap(MemberList.None);

也可以完全关闭内联映射验证(除非确保已经测试所有映射,否则不建议这样做):

Mapper.Initialize(cfg => cfg.ValidateInlineMaps = false);

禁用内联映射

关闭内联映射:

Mapper.Initialize(cfg => cfg.CreateMissingTypeMaps = false);

相关文章

  • 06.AutoMapper 之内联映射(Inline Mappi

    内联映射(Inline Mapping) AutoMapper在 6.2 以上版本将动态创建类型映射。 当第一次调...

  • Kotlin内联函数使用

    inline 本质 Kotlin中的内联函数使用inline关键字修饰,形如: 编译时,inline会将内联函数中...

  • display值及其属性

    display: inline | block | inline-block; 行级元素(内联元素)inline:...

  • C++ 从入门到放弃 (Day-02)

    内联函数(inline function) ◼ 使用inline修饰函数的声明或者实现,可以使其变成内联函数 建...

  • Kotlin - Inline Functions 1

    Inline Basics Inline or Inlining,我们更经常听到的词是方法内联或者内联函数。在大多...

  • 内联函数

    内联函数 整理自内联函数百度百科 内联函数是指用inline修饰的函数(并不是所有用inline修饰的函数都是内联...

  • CSS布局

    元素的显示方式 block:块级元素 inline:内联元素 inline-block:内联块元素 说明: 如果d...

  • iOS-inline内联函数

    iOS-inline内联函数

  • 04-内联函数(inline function)

    内联函数(inline function) 使用inline修饰函数的声明或者实现,可以使其变成内联函数。一般建议...

  • 内联函数、引用、const

    内联函数 inline function 使用inline修饰函数的声明或者实现,可以使其变成内联函数。 一般建议...

网友评论

    本文标题:06.AutoMapper 之内联映射(Inline Mappi

    本文链接:https://www.haomeiwen.com/subject/okvnlqtx.html