2016-07-03 2 views
0

Ich habe die folgenden Profile von Automapper 4.2.1 auf 5.0 portiert, was ich in der jetzt veralteten Configure() Methode im Konstruktor von Profilen verschoben und die Signatur der Convert Methode in den Ausdrücken.Update AutoMapper auf Version 5.0 macht ITypeConverter und Profile in Konflikt

public class AuthorModelToDtoProfile : Profile 
{ 
    public AuthorModelToDtoProfile() { 
     CreateMap<Author, AuthorDto>() 
      .ForMember(a => a.AuthorId, o => o.MapFrom(m => m.Id)) 
      .ForMember(a => a.FullName, o => o.MapFrom(m => $"{m.FirstName} {m.Surname}")); 
    } 
} 

public class BookModelToDtoProfile : Profile 
{ 
    public BookModelToDtoProfile() { 
     CreateMap<IEnumerable<Genre>, IEnumerable<int>>() 
      .ConvertUsing(new GenreExpression()); 
    } 
} 

public class GenreExpression : ITypeConverter<IEnumerable<Genre>, IEnumerable<int>> 
{ 
    public IEnumerable<int> Convert(IEnumerable<Genre> source, ResolutionContext context) 
     => source.Select(g => g.Id); 
} 

Jetzt, nach diesen Änderungen führt die folgende Konfiguration ein ArgumentException, sagte, es nicht einen Ausdruck vom Typ String für einen Parameter vom Typ IEnumerable<Genre> verwenden:

var mapperConfiguration = new MapperConfiguration(c => 
{ 
    c.AddProfile<BookModelToDtoProfile>(); 
    c.AddProfile<AuthorModelToDtoProfile>(); 
    c.CreateMissingTypeMaps = true; 
}); 

Seltsam, wenn ich einen Kommentar Das eine oder das andere der Profilergänzungen, die Erstellung der Mapper-Konfiguration wirft keine Ausnahme mehr und es mappt korrekt von Author zu AuthorDto oder von Book zu BookDto, basierend auf was ich kommentiert habe, was mich denken lässt, dass jedes Profil auf seine eigene ich s richtig.

Ich kann die Verwendung der TypeConverter in der vorgestellten Situation vermeiden, aber ich habe komplexere Ausdrücke, wo die .ConvertUsing(...) hilft Lesbarkeit und Wartbarkeit meines Codes.

Jeder hatte das gleiche Problem oder kann sehen, was ich falsch mache?

Antwort

0

Es wurde auf Version 5.0.2 behoben.

Verwandte Themen