Автоматизатор исключений Stackoverflow - PullRequest
0 голосов
/ 03 марта 2019

Итак, небольшое понимание моей проблемы: у меня есть сотрудник 4 класса, занятый, запрос и запрос, как показано ниже, у них есть циклические ссылки, я создал для них конфигурацию отображения, но когда я пытаюсь отобразить список сотрудников на занятых, яполучить исключение stackoverflow, даже если я использую MaxDepth (1).

public class Employee
{
    public string Name { get; set; }
    public List<Request> Requests { get; set; }
}

public class EmployeeDto
{
    public string Name { get; set; }
    public List<RequestDto> RequestsDto { get; set; }
}

public class Request
{
    public int Id { get; set; }
    public Employee CreatedBy { get; set; }
}

public class RequestDto
{
    public int Id { get; set; }
    public EmployeeDto CreatedBy { get; set; }
}

Конфигурация сопоставления:

cfg.CreateMap<Employee, EmployeeDto>().MaxDepth(1)
    .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name))
    .AfterMap((src, dest, context) =>
    {
        dest.RequestsDto = context.Mapper.Map<List<RequestDto>>(src.Requests);
    });

cfg.CreateMap<EmployeeDto, Employee>().MaxDepth(1)
    .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name))
    .AfterMap((src, dest, context) =>
    {
        dest.Requests = context.Mapper.Map<List<Request>>(src.RequestsDto);
    });

cfg.CreateMap<Request, RequestDto>().MaxDepth(1)
    .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id))
    .AfterMap((src, dest, context) =>
    {
        dest.CreatedBy = context.Mapper.Map<EmployeeDto>(src.CreatedBy);
    });

cfg.CreateMap<RequestDto, Request>().MaxDepth(1)
    .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id))
    .AfterMap((src, dest, context) =>
    {
        dest.CreatedBy = context.Mapper.Map<Employee>(src.CreatedBy);
    });

Исключение возникает в этой строке, когда я пытаюсь сопоставить сотрудников сотрудникам.

var mapped = _mapper.Map<List<EmployeeDto>>(employees);
...