Last active
August 29, 2015 14:20
-
-
Save a-h/3b735c5ab03e557a4846 to your computer and use it in GitHub Desktop.
Ninject to Simple Injector
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(Service.App_Start.NinjectWebCommon), "Start")] | |
[assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(Service.App_Start.NinjectWebCommon), "Stop")] | |
// Once it's building, rename the class away from Ninject. | |
public static class NinjectWebCommon | |
{ | |
// -- Ninject | |
// private static readonly Bootstrapper bootstrapper = new Bootstrapper(); | |
public static void Start() | |
{ | |
// -- Ninject | |
/* | |
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule)); | |
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule)); | |
bootstrapper.Initialize(CreateKernel); | |
*/ | |
// ++ Simple Injector | |
CreateContainer(); | |
} | |
public static void Stop() | |
{ | |
// -- Ninject. | |
// bootstrapper.ShutDown(); | |
} | |
// -- Ninject | |
/* | |
private static IKernel CreateKernel() | |
{ | |
var kernel = new StandardKernel(); | |
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel); | |
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>(); | |
RegisterServices(kernel); | |
return kernel; | |
} | |
private static void RegisterServices(IKernel kernel) | |
{ | |
kernel.Bind<ILog>().ToMethod(c => LogManager.GetLogger(typeof(NinjectWebCommon))); | |
kernel.Bind<IEntities>().To<Entities>(); | |
} | |
*/ | |
// ++ Simple Injector | |
private static Container CreateContainer() | |
{ | |
// Create the container as usual. | |
var container = new Container(); | |
RegisterServices(container); | |
// Setup MVC. | |
container.RegisterMvcControllers(Assembly.GetExecutingAssembly()); | |
container.RegisterMvcIntegratedFilterProvider(); | |
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container)); | |
// Setup WebApi. | |
container.RegisterWebApiControllers(GlobalConfiguration.Configuration); | |
GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container); | |
// Register filters (if you've used them). | |
RegisterGlobalFilters(GlobalFilters.Filters, container); | |
RegisterWebApiFilters(GlobalConfiguration.Configuration.Filters, container); | |
// Setup WCF. | |
SimpleInjectorServiceHostFactory.SetContainer(container); | |
return container; | |
} | |
private static void RegisterServices(Container container) | |
{ | |
container.RegisterSingle<ILog>(() => LogManager.GetLogger(typeof(NinjectWebCommon))); | |
container.Register<IEntities, Entities>(); | |
} | |
public static void RegisterGlobalFilters(GlobalFilterCollection filters, Container container) | |
{ | |
filters.Add(container.GetInstance<SessionFilter>()); | |
} | |
private static void RegisterWebApiFilters(System.Web.Http.Filters.HttpFilterCollection httpFilterCollection, Container container) | |
{ | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment