2016-09-23 8 views
2

Я пытаюсь зарегистрировать AutoMapper 5.1.1 с CastleWindsor, но я не знаю, где правильно вызвать Mapper.Initialize().Регистрация AutoMapper 5.1.1 с Castle Windsor

профиль AutoMapper:

namespace AutoMapper_DI.Mappings 
{ 
    public class WebMappingProfile : Profile 
    {   
     public WebMappingProfile() 
     { 
      CreateMap<Person, PersonDTO>();    
     } 
    } 
} 

Виндзорский замок регистрации:

class MainInstaller : IWindsorInstaller 
{ 
    public void Install(IWindsorContainer container, IConfigurationStore store) 
    {    
     container.AddFacility<TypedFactoryFacility>(); 

     container.Register(Component.For<IMapper>().UsingFactoryMethod(x => 
     { 
      return new MapperConfiguration(c => 
      { 
       c.AddProfile<WebMappingProfile>(); 
      }).CreateMapper(); 
     })); 

     container.Register(Component.For<MainClass>()); 
    } 
} 

А потом, когда я использую _mapper я Mapper не инициализирован исключение:

class MainClass 
{ 
    private readonly IMapper _mapper; 

    public MainClass(IMapper mapper) 
    { 
     _mapper = mapper; 
    } 

    public void Start() 
    {    
     Person p = new Person 
     { 
      Name = "Somebody", 
      Surname = "Nobody", 
      Birth = new DateTime(1984, 06, 18) 
     };    
     var personDTO = Mapper.Map<Person, PersonDTO>(p); 

    } 

} 

Спасибо за любые советы.

+0

Вы считали, что создаете конфигурацию картера отдельно и регистрируете ее как «экземпляр» с помощью «Component.For () .Instance (mapper);' – stuartd

ответ

3

Итак, код выше работает. Проблема в том, что я идиот. Потому что я не должен называть Mapper.Map, но _mapper.Map.