2016-03-04 2 views
6

Я обновляю AutoMapper в проекте, преобразовывая его из статического Mapper.CreateMap в новый способ и вводя IMapper, где мне нужно сопоставить.Использовать Automapper в ITypeConverter

Это замечательно, за исключением одного случая использования. У меня есть несколько ITypeConverter s для комплексного отображения, которые используют функцию Mapper.Map. Как я могу это исправить? Ниже приведен код, который я использую в данный момент.

Статические Mapper.Map не могут найти мои определенные сопоставления, потому что они не создаются с использованием статического метода.

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; 
    } 
} 

ответ

7

ResolutionContext содержит ссылку на текущий механизм отображения. Переключите Mapper.Map с context.Engine.Mapper.Map, и вы хорошо пойдете.

+0

Благодарим вас за обмен решаемой проблемой –

+0

Есть ли способ использовать экземпляр IMapper внутри ctor? –

+0

@AmelSalibasic вводят его? – Thijs

Смежные вопросы