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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值