Учитывая упрощенное представление моих объектов:
public class User
{
public string Id { get; set; }
}
public class UserDto
{
public string Id { get; set; }
public string Name {get; set; }
}
и некоторый метод, который возвращает коллекцию пользователей, например:
List<User> users = GetUserIds();
return users.Select(x => Mapper.Map<UserDto>(x));
Я хочу, чтобы для каждого User
позвоните в отдельную службу поиска, чтобы узнать их имя. Поскольку моя служба поиска примет список идентификаторов пользователей, я бы хотел объединить их все в один вызов (один сетевой вызов, а не сотни). Это возможно с любой существующей функциональностью AutoMapper? Теоретически это было бы что-то вроде:
CreateMap<List<User>, List<UserDto>>...
с пользовательским преобразователем, но кажется, что было принято решение не разрешать отображение коллекций.
По сути, я просто надеялся реализовать что-то более элегантное, чем приведенное ниже, которое в действительности работает просто отлично:
List<User> users = GetUserIds();
var ids = new List<string>();
foreach (var user in users)
{
ids.Add(user.Id);
}
List<UserDto> dtos = LookupNames(ids);
return dtos;