Я пытался заставить AutoMapper работать со списками, но всякий раз, когда я пытаюсь это сделать, он всегда возвращает одну и ту же ошибку:
Индекс был вне диапазона.Должен быть неотрицательным и меньше размера коллекции. \ R \ nИмя параметра: index
Я упростил код, но в основном это класс, который я хочу отобразить:
public class PlayerCar
{
public string Manufacturer { get; set; }
public string Name { get; set; }
}
public class Player
{
public List<PlayerCar> Cars { get; set; }
public string OwnerName { get; set; }
public string OwnerUsername { get; set; }
}
Это исходный класс:
public class Users
{
public int Id { get; set; }
public string Username { get; set; }
public Account User { get; set; }
}
public class Account
{
public string Name { get; set; }
public List<UserCar> Cars { get; set; }
}
public class UserCar
{
public string Manufacturer { get; set; }
public string Name { get; set; }
public int Year { get; set; }
public string Colour { get; set; }
}
Это используемая мной схема сопоставления:
CreateMap<Users, Player>()
.ForMember(c => c.OwnerUsername, opt => opt.MapFrom(c => c.Username))
.ForMember(c => c.OwnerName, opt => opt.MapFrom(c => c.User.Name))
.ForMember(c => c.Cars, opt => opt.MapFrom(c => c.User.Cars));
CreateMap<UserCar, PlayerCar>()
.ForMember(c => c.Manufacturer, opt => opt.MapFrom(c => c.Manufacturer))
.ForMember(c => c.Name, opt => opt.MapFrom(c => c.Name));
Не знаюзнаю, влияет ли это на что-нибудь, но я делаю .ProjectTo<Player>(_mapper.ConfigurationProvider).
Кто-нибудь знает, как решить эту проблему?