Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么是「;“实例”;相当于使用;“静态”;使用AutoMapper 7.0.1在CreateMap中映射?_C#_Automapper_Automapper 7 - Fatal编程技术网

C# 什么是「;“实例”;相当于使用;“静态”;使用AutoMapper 7.0.1在CreateMap中映射?

C# 什么是「;“实例”;相当于使用;“静态”;使用AutoMapper 7.0.1在CreateMap中映射?,c#,automapper,automapper-7,C#,Automapper,Automapper 7,我正在尝试升级到AutoMapper 7.0.1,它不再使用静态方法。我得到以下错误: 映射程序未初始化。使用适当的参数调用Initialize 配置如果您试图通过 容器或其他,请确保您没有对 静态映射器.Map方法,如果您使用的是ProjectTo或 使用DataSource扩展方法,确保传入 适当的IConfigurationProvider实例 我认为它来自这样的配置文件,我切换到不使用静态方法,除非它仍然在lambda表达式中使用staticMapper.Map(): public cl

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

映射程序未初始化。使用适当的参数调用Initialize 配置如果您试图通过 容器或其他,请确保您没有对 静态映射器.Map方法,如果您使用的是ProjectTo或 使用DataSource扩展方法,确保传入 适当的IConfigurationProvider实例

我认为它来自这样的配置文件,我切换到不使用静态方法,除非它仍然在lambda表达式中使用static
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)))
    }
}
公共类MyProfile:Profile
{
公共MyProfile()
{
CreateMap()
.ForMember(x=>x.owner,opt=>opt.resolvesusing(y=>
Mapper.Map(y.owner)))
}
}

我怎样才能得到一个映射器的实例来代替静态的
mapper.Map
方法呢?

使用Lucian的注释,我发现。似乎有一些重载将传递给您一个上下文,该上下文的实例为
IMapper

例如:

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


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

这可能会有所帮助:Context.Mapper。@LucianBargaoanu,我在配置文件中没有看到任何
Context
属性。这个用法会是什么样子?@LucianBargaoanu,你的评论帮我找到了答案。这是正确的吗
.ForMember(x=>x.Owners,opt=>opt.resolvesusing((src,dst,arg3,context)=>context.Mapper.Map(src.Owners))
Ok,但为什么需要这个?这就是默认情况下发生的情况。@Lucianbargaonanu,如果你是说代码本身在做什么,我没有写它,也不知道它的意图。这本书的作者可能不知道自己在做什么,但我不能百分之百肯定。我只是想在不破坏任何东西的情况下升级它。我明白了。无论如何,很可能不需要它。即使出于某种原因需要,使用MapFrom也会更好。这就是我想说的。但我明白你的意思:)
.AfterMap((s, d, context) =>
.ConvertUsing((source, dst, context) =>