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);
相关文章推荐
- AutoMapper官方文档(五)【反向映射和复杂化】
- AutoMapper官方文档(四)【扁平化(分割)映射】
- AutoMapper官方文档(十)【嵌套映射】
- AutoMapper官方文档(十五)【映射继承】
- AutoMapper官方文档(十八)【条件映射,开放泛型,了解你的映射】
- AutoMapper官方文档(十一)【自定义类型转换器】
- AutoMapper官方文档(三)【约定】
- 【AutoMapper官方文档】DTO与Domin Model相互转换(上)
- 【AutoMapper官方文档】DTO与Domin Model相互转换(下)
- AutoMapper官方文档(九)【列表和数组】
- AutoMapper官方文档(十四)【依赖注入】
- NHibernate官方文档——第八章 继承映射(Inheritance Mapping)
- MyBatis 官方文档学习2---XML 映射配置文件
- ABP官方文档(十三)【对象之间的映射】
- Hibernate 官方文档(入门) 第一章 1.2 - Mapping associations 映射联系
- 【AutoMapper官方文档】DTO与Domin Model相互转换(中)
- MyBatis官方文档——XML 映射配置文件
- MyBatis 官方文档学习2---XML 映射配置文件
- Spring官方文档翻译——15.4 处理器映射(Handler mappings)
- AutoMapper官方文档(六)【投影】