Я пытался создать собственный преобразователь типов с помощью automapper, но не смог приступить к работе или даже скомпилировать его.
Вот мой собственный преобразователь:
public class WorkPlanToWorkingTimeListConverter : ITypeConverter
{
public IEnumerable Convert(TPWorkPlanDTO source, IEnumerable destination, ResolutionContext context)
{
if (source == null)
{
return Enumerable.Empty();
}
return (IEnumerable)source.Weeks.SelectMany(week => week.Days.SelectMany(day => day.Shifts));
}
}
Я пытаюсь подключить это следующим образом:
CreateMap()
.ConvertUsing();
Но я получаю следующую ошибку:
Тип Mapping.Converter.WorkPlanToWorkingTimeListConverter нельзя использовать в качестве параметра типа. «TTypeConverter» в универсальном типе или методе «IMappingExpressionBase.ConvertUsing()». Неявного преобразования ссылок из Mapping.Converter.WorkPlanToWorkingTimeListConverter в AutoMapper.ITypeConverter' не существует.
Я пробовал некоторые перегрузки ConvertUsing(), принимающие типы, но просто не могу их скомпилировать.
Ниже я прикрепил свой DTO и модель, которую мне нужно сопоставить:
namespace Mapping.DTO;
public class TPWorkPlanDTO
{
public class TPWorkingTimeDTO
{
public int worktime_id { get; set; }
public DateTime start_time { get; set; }
public DateTime end_time { get; set; }
}
public class TPWorkPlanDay
{
public IEnumerable Shifts { get; set; }
}
public class TPWorkPlanWeek
{
public IEnumerable Days { get; set; }
}
public IEnumerable Weeks { get; set; }
}
namespace Models;
public class WorkingTime
{
public int Id { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... -converter