代码之家  ›  专栏  ›  技术社区  ›  adam0101

使用AutoMapper7.0.1在CreateMap中使用“static”Mapper.Map的“instance”等价于什么?

  •  0
  • adam0101  · 技术社区  · 6 年前

    我正在尝试升级到automapper7.0.1,它不再使用静态方法。我得到以下错误:

    映射程序未初始化。使用适当的 配置。如果您试图通过 容器或其他,请确保您没有任何呼叫 UseAsDataSource扩展方法,确保传入 适当的IConfigurationProvider实例。

    我认为这是来自这样的配置文件,我切换到不使用静态方法,除非它仍然使用静态方法 Mapper.Map<>() 在lambda表达式中:

    public class MyProfile : Profile
    {
        public MyProfile()
        {
            CreateMap<CredentialDetailDto, CredentialDetail>()
                .ForMember(x => x.Owners, opt => opt.ResolveUsing(y => 
                    Mapper.Map<IList<OwnerDto>>(y.Owners)))
        }
    }
    

    如何获得映射器的实例来代替静态映射器 Mapper.Map 方法?

    1 回复  |  直到 6 年前
        1
  •  1
  •   adam0101    6 年前

    https://stackoverflow.com/a/43259537/64279 . 似乎有一些重载会传递给您一个包含实例的上下文 IMapper .

    例如:

    .ForMember(x => x.Owners, opt => opt.ResolveUsing((src, dst, arg3, context) => 
        context.Mapper.Map<IList<OwnerDto>>(src.Owners)))
    

    .AfterMap((s, d, context) =>
    

    以及

    .ConvertUsing((source, dst, context) =>