Automapper 自动将源属性映射到内部目标对象

Automapper 自动将源属性映射到内部目标对象,automapper,Automapper,我有一个源类: class Source { public string Name; public string Field1; public string Field2; } 和两个目的地类别: class Destination { public string Name; public FieldsDto Fields; } class FieldsDto { public string Field1; public string

我有一个源类:

class Source {
    public string Name;
    public string Field1;
    public string Field2;
}
和两个目的地类别:

class Destination {
    public string Name;
    public FieldsDto Fields;
}

class FieldsDto {
    public string Field1;
    public string FieldTwo;
}
如何将
源.Field1
映射到
目标.Fields.Field1
源.Field2
映射到
目标.Fields.Field2

这个代码不起作用;它将抛出一个错误,指出成员的
自定义配置仅支持顶级individd
type1上的ual成员

Mapper.Initialize(cfg => {
    cfg.CreateMap<Source, Destination>()
        .ForMember(dest => dest.Fields.Field1, opt => opt.Mapfrom(src => src.Field1)
        .ForMember(dest => dest.Fields.FieldTwo, opt => opt.Mapfrom(src => src.Field2);
});
Mapper.Initialize(cfg=>{
cfg.CreateMap()
.FormMember(dest=>dest.Fields.Field1,opt=>opt.Mapfrom(src=>src.Field1)
.FormMember(dest=>dest.Fields.FieldTwo,opt=>opt.Mapfrom(src=>src.Field2);
});

如注释中所述,为了映射嵌套属性,您需要使用
ForPath
而不是
ForMember
。因此完整配置可能如下所示:

Mapper.Initialize(cfg =>
{
    cfg.CreateMap<Source, Destination>()
        .ForMember(dest => dest.Name, opt => opt.MapFrom(s => s.Name))
        .ForPath(dest => dest.Fields.Field1, opt => opt.MapFrom(src => src.Field1))
        .ForPath(dest => dest.Fields.FieldTwo, opt => opt.MapFrom(src => src.Field2));
});

改为使用路径。@LucianBargaoanu您能详细说明一下吗?不太清楚,只需搜索前面的答案。
Mapper.Initialize(cfg =>
{
    cfg.CreateMap<Source, FieldsDto>()
        .ForMember("Field1", opt => opt.MapFrom("Field1"))
        .ForMember("FieldTwo", opt => opt.MapFrom("Field2"));
    cfg.CreateMap<Source, Destination>()
        .ForMember(dest => dest.Name, opt => opt.MapFrom(s => s.Name))
        .ForMember(dest => dest.Fields, opt => opt.MapFrom(s => Mapper.Map<FieldsDto>(s)));
});