繁体   English   中英

什么是等效于使用AutoMapper 7.0.1在CreateMap中使用“静态” Mapper.Map的“实例”?

[英]What is the “instance” equivalent to using the “static” Mapper.Map inside CreateMap using AutoMapper 7.0.1?

我正在尝试升级到不再使用静态方法的AutoMapper 7.0.1。 我收到以下错误:

映射器未初始化。 用适当的配置调用初始化。 如果您尝试通过容器或其他方式使用mapper实例,请确保没有对静态Mapper.Map方法的任何调用,并且如果您使用的是ProjectTo或UseAsDataSource扩展方法,请确保传递适当的IConfigurationProvider实例。

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

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方法使用的映射器实例?

使用Lucian的评论,我发现https://stackoverflow.com/a/43259537/64279 似乎有些重载将为您传递包含IMapper实例的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) =>

您只需要在lambda表达式中提供正确数量的参数即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM