AutoMapper官方文档(八)【内联映射】

来源:互联网 发布:chinanet连接软件 编辑:程序博客网 时间:2024/05/17 04:27

AutoMapper即时创建类型映射(6.2.0中的新增功能)。 当您第一次调用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);
阅读全文
0 0
原创粉丝点击