Automapper - Типы отображения ошибок. Типы отображения: IEnumerable`1 -> IEnumerable`1 System.Collections.Generic.IEnumerable`1 [[TicketTO, app.DTO - PullRequest
0 голосов
/ 14 октября 2019

У меня есть приложение ASP.Net Core C#, использующее AutoMapper

DTO

public class MovieTO
{
   public int Id { get; set;}

   public IEnumerable<TicketTO> Tickets { get; set;}
}


public class TicketTO
{
   public string Prop1{ get; set;}
   public string Prop2{ get; set;}
   public string Prop3{ get; set;}
   public string Prop4{ get; set;}
}

Доменный объект

public class Movie
{
   public int Id { get; set;}

   public IEnumerable<BasicTicket> Tickets { get; set;}
}

 public class BasicTicket
{

}

 public class RegularTicket : BasicTicket
{
   public string Prop1{ get; set;}
   public string Prop2{ get; set;}
}

 public class SpecialTicket : BasicTicket
{
   public string Prop3{ get; set;}
   public string Prop4{ get; set;}
}

Конфигурация AutoMapper

 public class AppObjectsMapper
{
    private readonly IMapper _mapper;

    public ObjectsMapper()
    {
        var config = new MapperConfiguration(cfg =>
        {

            cfg.CreateMap<TicketTO, RegularTicket>();
            cfg.CreateMap<TicketTO, SpecialTicket>();

            cfg.CreateMap<MovieTO, Movie()

        });
        _mapper = config.CreateMapper();
    }


    public Movie MapToEntity(MovieTO movie)
    {

        if(movie.IsSpecial)
        {
            //#Line1
            _mapper.Map<IEnumerable<TicketTO>, IEnumerable<SpecialTicket>>(movie.Tickets); 
        }
        else
        {
             //#Line2
            _mapper.Map<IEnumerable<TicketTO>, IEnumerable<RegularTicket>>(movie.Tickets);
        }
        return _mapper.Map<MovieTO, Movie>(eventDetail);
    }

       }

Когда преобразователь вызывается в # line1 или # line2, он выдает приведенную ниже ошибку времени выполнения.

Типы сопоставления ошибок. Типы сопоставления: IEnumerable 1 -> IEnumerable 1 System.Collections.Generic.IEnumerable 1[[TicketTO, app.DTO, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] -> System.Collections.Generic.IEnumerable 1 [[Domain.SpecialTicket, myapp.domain, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = ноль]]

Как распечатать / отобразить это?

Спасибо!

1 Ответ

0 голосов
/ 15 октября 2019

На самом деле вам не хватает некоторых настроек, о которых на самом деле ясно говорит исключение. Так что просто прочитайте исключение и добавьте отсутствующее отображение, например:

            cfg.CreateMap<TicketTO, BasicTicket>();

Это должно работать. С наилучшими пожеланиями, Роберт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...