2016-03-04 6 views
6

Ich aktualisiere AutoMapper in einem Projekt, Konvertierung von der statischen Mapper.CreateMap auf die neue Weise und eine IMapper Injektion, wo ich zuordnen muss.Verwenden Sie Automapper in ITypeConverter

Das funktioniert gut, außer für einen Anwendungsfall. Ich habe mehrere ITypeConverter s für komplexe Zuordnung, die die Mapper.Map Funktion verwenden. Wie kann ich das beheben? Unten ist der Code, den ich gerade benutze. Die statische Mapper.Map kann meine definierten Zuordnungen nicht finden, da sie nicht mit der statischen Methode erstellt werden.

public partial class ApplicationMappingsProfile 
{ 
    private void RegisterMappings() 
    { 
     CreateMap<Application, AppDto>() 
      .ConvertUsing<ApplicationTypeConverter>(); 
    } 
} 

private class ApplicationTypeConverter : ITypeConverter<App, AppDto> 
{ 
    public AppDto Convert(ResolutionContext context) 
    { 
     var src = context.SourceValue as App; 
     if (src == null) 
     { 
      return null; 
     } 

     var dto = Mapper.Map<App, AppDto>(src); 
     dto.property = Mapper.Map<Property>(src.SomeProperty); 

     return result; 
    } 
} 

Antwort

7

Die ResolutionContext enthält einen Verweis auf die aktuelle Mapping-Engine. Schalten Sie die Mapper.Map mit context.Engine.Mapper.Map und Sie sind gut zu gehen.

+0

vielen Dank für die Freigabe Ihres gelösten Problems –

+0

gibt es eine Möglichkeit, IMapper-Instanz innerhalb von Ctor zu verwenden? –

+0

@AmelSalibasic injizieren es? – Thijs

Verwandte Themen