AutoMapper与Ninject混乱(AutoMapper with Ninject confu

2019-09-17 21:36发布

对于初学者来说,我使用这个模块:

    public class AutoMapperModule : NinjectModule
{
    public override void Load()
    {
        Bind<ITypeMapFactory>().To<TypeMapFactory>();
        foreach (var mapper in MapperRegistry.AllMappers())
        {
            Bind<IObjectMapper>().ToConstant(mapper);
        }

        Bind<AutoMapper.ConfigurationStore>().ToSelf().InSingletonScope().WithConstructorArgument("mappers", ctx => ctx.Kernel.GetAll<IObjectMapper>());
        Bind<IConfiguration>().ToMethod(ctx => ctx.Kernel.Get<AutoMapper.ConfigurationStore>());
        Bind<IConfigurationProvider>().ToMethod(ctx => ctx.Kernel.Get<AutoMapper.ConfigurationStore>());
        Bind<IMappingEngine>().To<MappingEngine>();
    }
}

我有我的所有地图引导程序类

        public static void Configure(IKernel kernel)
    {
        Mapper.Initialize(map => map.ConstructServicesUsing(t => kernel.Get(t)));
    }

我有一个访问数据库,需要注入的仓库解析器。 它的工作原样,但我无法弄清楚如何得到它的单元测试和IMappingEngine工作。

        public HomeController(IMappingEngine mappingEngine)
    {
        _mappingEngine = mappingEngine;
    }

因为没有地图存在_mappingEngine.Map抛出异常。 Mapper.Map工作。

我在想什么? 如何让我的引导程序与单元测试工作,所以,在我的解析器的版本库使用假/模拟库?

Answer 1:

尝试改变映射的绑定。

Bind<IMappingEngine>().ToMethod(ctx => Mapper.Engine);


文章来源: AutoMapper with Ninject confusion