如何不显式指定名称自动匹配的成员?

How not to explicitly specify members for which the name automatically match up?

我正在使用 AutoMapper 9.0,在下面的示例中,我将 Person 映射到 People 对象。

因为 1 个成员因人而异(Person 有 Sfx 而 People 有 Suffix),我必须专门映射其余部分否则会自动匹配的属性。

有没有办法不指定它们但仍然映射它们?

    configurationExpression.CreateMap<JsonRequest, XmlRequest>()
                .ForMember(
                    dest => dest.People,
                    opt => opt.MapFrom(src => new People
                    {
                        FirstName = src.Person.FirstName,
                        MiddleName = src.Person.MiddleName,
                        LastName = src.Person.LastName,
                        Suffix = src.Person.Sfx
                    }));

检查 documentation,您应该能够通过为 OutterClassInnerClass 定义单独的映射来实现此目的:

var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<OuterSource, OuterDest>();
    cfg.CreateMap<InnerSource, InnerDest>();
});

你试过这样的东西吗?

configurationExpression.CreateMap<Person, People>()
    .ForMember(dest => dest.Suffix, opt => opt.MapFrom(src => src.sfx))
    .ReverseMap(); 

configurationExpression.CreateMap<JsonRequest, XmlRequest>()
    .ForMember(dest => dest.People, opt => opt.MapFrom(src => src.Person))
    .ReverseMap();