2012-07-25 10 views
5

Użyłem Ninject do mojej aplikacji. Ninject jest naprawdę prosty i łatwy do nauczenia, ale jest dość powolny i próbuję użyć innego IoC, aby porównać, czy jest on szybszy jak w Ninject.Zastąpić Ninject prostym wtryskiwaczem

Istnieje wiele kontenerów IoC dla MVC3 i Simple Injector wygląda naprawdę dobrze, ale mam wiele problemów z replikowaniem Ninject z Simple Injector.

Zwłaszcza z AutoMapper. Próbuję przekonwertować te linie na kod 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>() 

Czy możesz mi pomóc? Czytałem dokumentację i googled, ale nie ma rozwiązania do tej pory.

+1

Nie możemy pomóc, jeśli nie stwierdzić, co to jest trzeba pomóc. Co nie powiedzie się? – Mithon

Odpowiedz

11

Ta rejestracja Ninject grubsza przekłada się na następujący prosta rejestracja wtryskiwacza:

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

To działa! DZIĘKI :-)! To było dość łatwe ... –