Dependency Injection in 1 line with MVC3 and Ninject
Dependency injection is a must have in any well designed, loosely coupled system. And is absolutely necessary if you plan (and you should!) to use unit testing and TDD.
Up until recently, it was quite fiddly to add DI to a project. It involved downloading 3rd party libraries, modifying config files, and writing code to map each interface to it's concrete implementation.
This is how to do it:
- Install the NuGet packages Ninject.MVC3 and Ninject.Extensions.Conventions to your MVC3 project
- Open the NinjectWebCommon class located in the App_Start folder (this was added by the Ninject.MVC3 package)
- Add "using Ninject.Extensions.Conventions;" to the using statements at the top of the class
- Add the following line of code to the RegisterServices method:
kernel.Bind(x => x .FromAssembliesMatching("*") .SelectAllClasses() .BindDefaultInterface());