2012-07-25 12 views
5

私は自分のアプリケーションにNinjectを使用しました。 Ninjectは本当にシンプルで習得が簡単ですが、非常に遅く、Ninjectと同じように速いのかどうかを比較するために別のIoCを使用しようとします。NinjectをSimple Injectorに置き換えます。

MVC3には多くのIoCコンテナがあり、Simple Injectorは本当にうまく見えますが、NinjectにSimple Injectorを再現することには多くの問題があります。

特に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>() 

あなたは私を助けることができますか?私はドキュメントを読んで、グーグルではありますが、これまでのところ解決策はありません。

+1

。何が失敗するのですか? – Mithon

答えて

11

このNinject登録はおおよそ次のような単純なインジェクター登録に変換します。あなたはそれはあなたが助けが必要であるものを述べる場合を除き私たちはあなたを助けることができない

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

それは動作します!ありがとうございます:-)!それはかなり簡単だった... –

関連する問題