用简单的注射器替换Ninject

时间:2012-07-25 21:17:05

标签: c# dependency-injection ninject automapper simple-injector

我已将Ninject用于我的应用程序。 Ninject非常简单易学,但速度很慢,我尝试使用另一个IoC来比较它是否比Ninject更快。

MVC3和Simple Injector有很多IoC容器看起来对我很好,但是我用Simple Injector替换Ninject会遇到很多问题。

特别是AutoMapper。我尝试将这些行转换为Simple Injector代码。

Bind<ITypeMapFactory>().To<TypeMapFactory>();

foreach (var mapper in MapperRegistry.AllMappers())
{
    Bind<IObjectMapper>().ToConstant(mapper);
}

Bind<ConfigurationStore>().ToSelf().InSingletonScope()
    .WithConstructorArgument("mappers",
        ctx => ctx.Kernel.GetAll<IObjectMapper>());

Bind<IConfiguration>()
    .ToMethod(ctx => ctx.Kernel.Get<ConfigurationStore>());

Bind<IConfigurationProvider>().ToMethod(ctx =>
    ctx.Kernel.Get<ConfigurationStore>());

Bind<IMappingEngine>().To<MappingEngine>()
你能帮帮我吗?我已经阅读了文档和googled,但到目前为止还没有解决方案。

1 个答案:

答案 0 :(得分:11)

此Ninject注册大致转换为以下Simple Injector注册:

container.Register<ITypeMapFactory, TypeMapFactory>();
container.RegisterCollection<IObjectMapper>(MapperRegistry.AllMappers());
container.RegisterSingleton<IConfiguration, ConfigurationStore>();
container.RegisterSingleton<IConfigurationProvider, ConfigurationStore>();
container.Register<IMappingEngine, MappingEngine>();