您的位置:首页 > 移动开发

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

2017-11-28 13:43 316 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: