自动映射器和多维列表

Automapper and multidimensional list

我想将 List<List<Item>> 映射到 List<List<Item2>>,但我无法使其工作。有没有办法使用简单的配置来做到这一点,或者这种情况是否需要编写自定义转换器?这是我的案例(也可在 dotnetfiddle 上找到):

using System;
using System.Collections.Generic;
using AutoMapper;
using Newtonsoft.Json;

public class Program
{
    public static void Main()
    {
        var configuration = new MapperConfiguration(cfg =>
        {
            cfg.CreateMap<ItemCollection, List<List<Item2>>>();
            cfg.CreateMap<List<List<Item>>, List<List<Item2>>>();
            cfg.CreateMap<List<Item>, List<Item2>>();
            cfg.CreateMap<Item, Item2>().ForMember(x => x.Name, opt => opt.MapFrom(x => x.Name));
        });
        var mapper = new Mapper(configuration);
        
        var collection = new ItemCollection();
        collection.Add(new List<Item>(){new Item{Name = "item"}});
        
        var dest = mapper.Map<List<List<Item2>>>(collection);
        Console.WriteLine(JsonConvert.SerializeObject(dest));
    }
}

public class ItemCollection : List<List<Item>>
{
}

public class Item
{
    public string Name { get; set; }
}

public class Item2
{
    public string Name { get; set; }
}

因此,我希望在输出 window 中看到 [[{Name = "item"}]]

您不需要指定如何映射到集合,只需指定个别类型。

https://dotnetfiddle.net/D6HGik