Статический Класс AutoMapper Не Является Списком Сопоставления и Вложенной Сущностью

#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.