向温莎城堡注册 AutoMapper 5.1.1

Mic*_*hal 5 c# castle-windsor automapper-5

我正在尝试向 CastleWindsor 注册 AutoMapper 5.1.1,但我不知道在哪里正确调用 Mapper.Initialize()。

自动映射器简介:

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

温莎城堡注册:

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>());
    }
}
Run Code Online (Sandbox Code Playgroud)

然后当我使用 _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);

    }

}
Run Code Online (Sandbox Code Playgroud)

感谢您的任何建议。

Mic*_*hal 5

所以,上面的代码是有效的。问题是,我是个白痴。因为我不应该调用Mapper.Map,而应该调用_mapper.Map。