AutoMapper IgnoreAllTheRest 功能

AutoMapper IgnoreAllTheRest capabilities

我是 AutoMapper 的新手,想设置两个要映射的属性,但忽略其他 15 个属性。

我的研究和阅读 here 表明有 3 个选项。

  1. 使用 Ignore(),例如:(目前可以使用,但它很臃肿)

    d => d.IgnoreMe, opt => opt.Ignore()
    
  2. 使用 [IgnoreMapAttribute] 注释。希望我可以,但对象不是我可以调整的。

  3. 扩展方法如所见here answer posted by Rami A(我必须调整它)

但是在我看来这些选项是解决方法,我只是没有正确使用 AutoMapper?

我要找的是这样的:

Mapper.CreateMap<Customer, DropPointModel>()
      .ForMember(dest => dest.CustomerId,
                 opts => opts.MapFrom(src => src.Id))
      .ForMember(dest => dest.VendorId,
                 opts => opts.MapFrom(src => src.VendorId))
      .IgnoreAllOtherMappings();

AutoMapper 中是否存在这些方面的内容,我没有正确实施,或者我是否正确,只需要编写扩展方法。如果是后者,我会 post 回到这里为其他人服务。

你试过使用类似下面的东西吗

public static class MappingExpressionExtensions
{
    public static IMappingExpression<TSource, TDest> IgnoreAllUnmapped<TSource, TDest>(this IMappingExpression<TSource, TDest> expression)
    {
        expression.ForAllMembers(opt => opt.Ignore());
        return expression;
    }
}

      .ForMember(dest => dest.CustomerId,
                       opts => opts.MapFrom(src => src.Id))
      .ForMember(dest => dest.VendorId,
                      opts => opts.MapFrom(src => src.VendorId))
        .IgnoreAllUnmapped();

或这个

.ForMember(dest => dest.CustomerId,
                       opts => opts.MapFrom(src => src.Id))
      .ForMember(dest => dest.VendorId,
                      opts => opts.MapFrom(src => src.VendorId))
      .ForAllMembers(opt => opt.Ignore());

这是对另一个问题的重复问题,我不会在这里提供答案,因为原作者的工作需要荣誉。

在这里查看,如果有帮助一定要点赞。

AutoMapper: "Ignore the rest"?