#c# #.net #asp.net-core #.net-core #automapper
Вопрос:
Я использую статический класс для отображения своих сущностей. Но если я использую следующий код, он не работает для преобразования списков и вложенных сущностей;
public static class MapperUtil<TSource, TDestination>
{
private static readonly Mapper _mapper = new Mapper(new MapperConfiguration(
cfg =>
{
cfg.CreateMap<TDestination,TSource>().ReverseMap();
}));
public static TDestination Map(TSource source)
{
return _mapper.Map<TSource,TDestination>(source);
}
}
Но если я использую следующий код, он работает хорошо.
var mapper = new Mapper(new MapperConfiguration(cfg =>
{
cfg.CreateMap<List<User>, List<UserDto>>().ReverseMap();
}));
List<UserDto> userDto = mapper.Map<List<User>,List<UserDto>> (users);
Кто-нибудь может мне помочь? (Я новичок).
И хорошо ли использовать статический класс для сопоставления? Каково ваше решение для отображения в качестве статического класса?
Комментарии:
1. Два блока кода немного отличаются друг от друга. Вы можете попробовать измениться
cfg.CreateMap<TDestination,TSource>().ReverseMap();
с помощьюcfg.CreateMap<TSource,TDestination>().ReverseMap();
2. @сердар, я думаю . ReverseMap(); делаем это. Не Работает.
Ответ №1:
Вы должны удалить List
CreateMap
метод in и создать карту для ваших типов:
var mapper = new Mapper(new MapperConfiguration(cfg =>
{
cfg.CreateMap<User, UserDto>().ReverseMap();
}));
Окончательно:
List<UserDto> userDto = mapper.Map<List<UserDto>>(users);
Комментарии:
1. При удалении списка он выдает ошибку «AutoMapperMappingException: Отсутствует конфигурация карты типов или неподдерживаемое сопоставление». Кстати, мой вопрос касается первого блока кода.
Ответ №2:
если вы используете универсальный тип для сопоставления, попробуйте использовать приведенный ниже код
public class Source<T> {
public T Value { get; set; }
}
public class Destination<T> {
public T Value { get; set; }
}
// Create the mapping
var configuration = new MapperConfiguration(cfg => cfg.CreateMap(typeof(Source<>), typeof(Destination<>)));
Комментарии:
1. Не Работает:
AutoMapperMappingException: Missing type map configuration or unsupported mapping.