2016-09-23 13 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その後、初期化されていません例外:任意のアドバイスのための

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を呼び出します。

関連する問題