Introduction

In this article, I will show you Dependency Injection in the Web API using Ninject.

The following is the procedure for creating the application.

Step 1

Create a Web API application as in the following:

  • Start Visual Studio 2012.
  • From the start window Select "Installed" -> "Visual C#" -> "Web".
  • Select "ASP.NET MVC4 Web Application" and click on the "Ok" button.

    Select Asp.Net Mvc4 web Application
  • From the "MVC4 Project" window select "Web API".

    Select Web API
  • Click on the "OK" button.

Step 2

Add an interface in the model folder.

  • In the "Solution Explorer".
  • Right-click on the "Model" -> "Add" -> "New Item".
  • Select "Installed" -> "Visual C#".
  • Select "Interface".

    Add Interface
  • Click on the "Add" button.

Add the following code:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace ninjectAPI.Models
  7. {
  8. public interface IDetail
  9. {
  10. string FullName { get; set; }
  11. }
  12. }

Step 3

Create a Model Class using the following procedure:

  • In the "Solution Explorer".
  • Right-click on the Model Folder.
  • Select "Add" -> "Class".
  • Select "Installed" -> "Visual C#" and select class.

    Add Model Class
  • Click on the "Add" button

Add the following code:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. namespace ninjectAPI.Models
  6. {
  7. public class Detail : IDetail
  8. {
  9. public string FullName
  10. {
  11. get
  12. {
  13. return "Kamya Nehwal";
  14. }
  15. set
  16. {
  17. this.FullName = value;
  18. }
  19. }
  20. }
  21. }

Step 4

Now install the Ninject.mvc3 package as in the following:

  • In the Tools menu.
  • Select "Library Package Manager" -> "Manage NuGet Packages for Solutions ".
  • In the search box type "ninject".

    Install Ninject.MVC3 Package
  • Install the Ninject.MVC3 package.
  • After installation select the "App_Start" folder; there is a "NinjectWebCommon.cs" class that exists.

    Display NinjectWebCommon class

Now select this class and perform some changes in the "RegisterServices()" method.

  1. private static void RegisterServices(IKernel kernel)
  2. {
  3. kernel.Bind<IDetail>().To<Detail>();
  4. }

Step 5

Now add the "Ninject.WebApi.DependencyResolver" as in the following:

  • In the Tools menu.
  • Select "Library Package Manager" -> "Manage NuGet Packages for Solutions ".
  • In the search box type "Ninject.WebApi.DependencyResolver".

    Installed Package Ninject.WebApi.DependencyResolver
  • And install the "Ninject.WebApi.DependencyResolver" package.

After installing it, go to the "NinjectWebCommon.cs" file and add the following code in the CreateKernel() method.

  1. private static IKernel CreateKernel()
  2. {
  3. var kernel = new StandardKernel();
  4. kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
  5. kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
  6. System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver = new Ninject.WebApi.DependencyResolver.NinjectDependencyResolver(kernel);
  7. RegisterServices(kernel);
  8. return kernel;
  9. }

Step 6

Add a Controller class in the controller folder as in the following:

  • In the "Solution Explorer".
  • Right-click on the Controller folder.
  • Select "Add" -> "Controller".

    Add Controller
  • Click on the "Add" button.

Add the following code:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Net.Http;
  6. using System.Web.Http;
  7. using ninjectAPI.Models;
  8. namespace ninjectAPI.Controllers
  9. {
  10. public class ShowController : ApiController
  11. {
  12. private IDetail idetail = null;
  13. public ShowController(IDetail Idetail)
  14. {
  15. idetail = Idetail;
  16. }
  17. [HttpGet]
  18. public string GetValue()
  19. {
  20. return idetail.FullName;
  21. }
  22. }
  23. }

Step 7

Execute the application and change the URL to "http://localhost:13357/api/Show/GetValue".

Output