[英]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.