使用 AutoMapper CreateMap 将属性映射到对象列表

hak*_*dis 2 c# automapper .net-core

首先,对不起我的英语:)

我正在使用 AutoMapper 在类之间进行映射。

我的课程结构如下。

public class OrderDto {
  int Id { get; set; }
}

public class OrderDtoList {
  OrderDto[] Orders { get; set; }
}

public class Order {
  int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,我想使用 AutoMapping Profile 将 OrderDtoList 对象映射到 List。

public class OrderMappingProfile : Profile {
  public OrderMappingProfile() {
    CreateMap<OrderDto, Order>();
    CreateMap<OrderDtoList, List<Order>(); // <<<<<<<< I cannot figure out this.
  }
}

Run Code Online (Sandbox Code Playgroud)

但我不知道如何编写 CreateMap<>() 函数。

请帮忙。

Ale*_*scu 5

您可以创建一个实现 ITypeConverter< OrderDtoList, List > 的类,并使用ConvertUsing方法创建映射。

public class OrderDtoListMapper : ITypeConverter<OrderDtoList, List<Order>>
{
    public List<Order> Convert(OrderDtoList source, List<Order> destination, ResolutionContext context)
    {
        return context.Mapper.Map<List<Order>>(source.Orders);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以像这样创建映射:

public class MapperProfile : Profile
{
    public MapperProfile()
    {
        CreateMap<OrderDto, Order>();
        CreateMap<OrderDtoList, List<Order>>().ConvertUsing<OrderDtoListMapper>();
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这就是您正在寻找的!