Ниже приведены простые объекты, которые отлично работают с AutoMapper:
public class Source
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Destination
{
public int Id { get; set; }
public string Name { get; set; }
}
СэмплКласс.cs
using Automapper;
public class SampleClass
{
private IMapper _mapper;
public SampleClass(IMapper mapper)
{
_mapper = mapper;
}
public void Logic(Souce source)
{
var Dest = _mapper.Map<Destination>(source);
}
}
Приведенный выше оператор сопоставления работает нормально, и я вижу, что все поля сопоставляются от источника к месту назначения, поскольку это простой объект.
Но мое требование таково: у меня есть сложная структура объекта следующим образом:
public class Source
{
public int Id { get; set; }
public string Name { get; set; }
public List<SourceChild> lstChild { get; set; }
}
public class SourceChild
{
public string Address { get; set; }
}
public class Destination
{
public int Id { get; set; }
public string Name { get; set; }
public List<SourceDestination> lstChild { get; set; }
}
public class SourceDestination
{
public string Address { get; set; }
}
public void Logic(Souce source)
{
var Dest = _mapper.Map<Destination>(source);
}
Приведенное выше сопоставление приводит к исключению, говорящему:
Отсутствует конфигурация сопоставления типов или неподдерживаемое сопоставление.
Чего мне здесь не хватает для отображения сложного объекта?





public class SourceProfile : Profile
{
public SourceProfile()
{
CreateMap<Source, Destination>();
CreateMap<SourceChild, SourceDestination>();
}
}
MapperConfiguration _config = new MapperConfiguration(cfg => cfg.AddProfile<SourceProfile>());
Если вы используете ASP.NET Core, вы регистрируете службу AutoMapper в контейнере DI со сборкой проекта, которая содержит ваш Profile класс ( Сканирование сборки для автоматической настройки).
services.AddAutoMapper(/* profileAssembly1 */);
Поделитесь полным сообщением об исключении и конфигурацией/профилем сопоставления. Он сообщит вам, какая конфигурация/правило сопоставления отсутствует.