Pages

Showing posts with label Ninject. Show all posts
Showing posts with label Ninject. Show all posts

Monday, June 4, 2018

Ninject Setup IoC and Webapi

Ninject Setup IoC and Webapi
Namespace

  • Ninject.Mvc5
  • Ninject.Web.WebApi
  • Ninject.Web.Common.WebHost
  • Ninject.Web.Common
  • Ninject
  • WebActivatorEx


Ninject.Mvc5 installs dependencies

  • Ninject.Web.Common.WebHost
  • Ninject.Web.Common
  • Ninject.Web.Mvc
  • Ninject

Making Ninject work with WebApi
Installing package
  • Ninject.Web.WebApi

Will add dependency
  • Ninject.Web.WebApi
Making Ninject auto executing
Install package
  • WebActivatorEx
Below, file was created in App_Start or manually created


[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(YooperGreens.App_Start.NinjectWebCommon), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(YooperGreens.App_Start.NinjectWebCommon), "Stop")]

namespace YooperGreens.App_Start
{
    using System;
    using System.Web;
    using System.Web.Http;
    using Microsoft.Web.Infrastructure.DynamicModuleHelper;

    using Ninject;
    using Ninject.Web.Common;
    using Ninject.Web.Common.WebHost;
    using Ninject.Web.WebApi;
    using YooperGreens.Db;

    public static class NinjectWebCommon
    {
        private static readonly Bootstrapper bootstrapper = new Bootstrapper();

        /// <summary>
        /// Starts the application
        /// </summary>
        public static void Start()
        {
            DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
            DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));

            bootstrapper.Initialize(CreateKernel);
        }

        /// <summary>
        /// Stops the application.
        /// </summary>
        public static void Stop()
        {
            bootstrapper.ShutDown();
        }

        /// <summary>
        /// Creates the kernel that will manage your application.
        /// </summary>
        /// <returns>The created kernel.</returns>
        private static IKernel CreateKernel()
        {
            var kernel = new StandardKernel();
            try
            {
                kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
                kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();

                RegisterServices(kernel);
                GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
                return kernel;
            }
            catch
            {
                kernel.Dispose();
                throw;
            }
        }

        /// <summary>
        /// Load your modules or register your services here!
        /// </summary>
        /// <param name="kernel">The kernel.</param>
        private static void RegisterServices(IKernel kernel)
        {
            kernel.Bind<YooperGreensDbContext>().ToSelf().InRequestScope();
            kernel.Bind<IAccountViewModel>().To<AccountViewModel>();
        }
    }
}

This post is for the purpose of my notes only and sometimes a rant.
“I invented nothing new. I simply assembled the discoveries of other men behind whom were centuries of work. Had I worked fifty or ten or even five years before, I would have failed. So it is with every new thing. Progress happens when all the factors that make for it are ready and then it is inevitable. To teach that a comparatively few men are responsible for the greatest forward steps of mankind is the worst sort of nonsense.”
Henry Ford