2

尝试根据 viewModel 上的特定字段跳过属性映射。有什么方法可以访问 ForAllMembers -> Condition 方法中的源对象

Mapper.CreateMap<AViewModel, AEntity>()
      .IgnoreMembers(ignoreMembers)
      .ForAllMembers(o => {
          o.Condition(ctx => {
                        //Need to access AViewModel instance here
                return "Id" == ctx.MemberName;
    });
   });
4

2 回答 2

1

我不知道官方的方式,但你可以使用该Parent属性ResolutionContext

Mapper.CreateMap<AViewModel, AEntity>()
      .IgnoreMembers(ignoreMembers)
      .ForAllMembers(o => {
          o.Condition(ctx => {
                AViewModel instance = (AViewModel)ctx.Parent.SourceValue;
                return "Id" == ctx.MemberName;
    });
   });

如果您在映射的多个级别深处,您可以“遍历” Parent关系,直到找到您正在寻找的类型。

于 2012-04-04T11:47:11.643 回答
0

我认为您可以使用自定义 ValueResolver 以另一种方式执行此操作。

看:

使用 AutoMapper 进行条件投影

于 2012-04-04T11:56:14.060 回答