使用 AutoMapper,如何将聚合根 属性 映射到所有目标集合项属性?

Using AutoMapper, how do I map an aggregate root property to all destination collection item properties?

我创建了一个MRE which is located and available here

总而言之,我想将源 class 的 属性 映射到目标 属性 的多个列表项的 属性(类型列表)

这是来自 MRE 的例子

来源

using System.Collections.Generic;

namespace WebApplication1.Controllers
{
    public class OuterSource
    {
        public int ID { get; set; }

        public List<OuterSourceListItem> List { get; set; }

        public string OuterSourceProp1 { get; set; }// Notice how you can have prop on source which is not on dest, no complaints from AutoMapper there
    }
    public class OuterSourceListItem
    {
        public string Name { get; set; }

        public string Desc { get; set; }

    }
}

目的地

using System.Collections.Generic;

namespace WebApplication1.Models
{
    public class OuterDest
    {
        public int ID { get; set; }

        public List<OuterDestListItem> List { get; set; }
    }
    public class OuterDestListItem
    {
        public string Name { get; set; }

        public string Desc { get; set; }

        public int MyParentID { get; set; }

    }
}

映射器配置

    return new MapperConfiguration(cfg =>
    {
        cfg.AddProfile(new OuterSourceToOuterDest());
        cfg.AddProfile(new OuterSourceListItemToOuterDestListItem());
    });

简介

public class OuterSourceListItemToOuterDestListItem : Profile
{
    public OuterSourceListItemToOuterDestListItem()
    {
        CreateMap<OuterSourceListItem, OuterDestListItem>();
    }
}



  public class OuterSourceToOuterDest : Profile
    {
        public OuterSourceToOuterDest()
        {
            CreateMap<OuterSource, OuterDest>();
        }
    }

通过上述设置,这里是使用那些 classes 的客户端,包括实际映射

[HttpGet]
public IActionResult Get()
{
    var inputModel = new OuterSource() { ID = 1};
    inputModel.List = new List<OuterSourceListItem>();
    inputModel.List.Add(new OuterSourceListItem() { Name = "aaa", Desc = "dddd" });
    var domain = _mapper.Map<OuterDest>(inputModel);

    return Ok(domain);
}

现在的实际输出是下面左边的红色,想要的结果是右边的绿色

我需要 list.myParentID 值等于 OuterSource.ID 的值 你可以在这里看到

这几乎就像我需要以某种方式在 OuterDest 中的 属性 setters/getters 中以某种方式导出 MyParentID?

一个选项是在映射之后立即调用 OuterDest 实例上的方法

AfterMap(ActionafterFunction)

Execute a custom function to the source and/or destination types after member mapping