Change is inevitable, so be prepared.

In software engineering, dependency injection is a technique whereby one object supplies the dependencies of another object. A dependency is an object that can be used (a service). An injection is the passing of a dependency to a dependent object (a client) that would use it. The service is made part of the client's state. Passing the service to the client, rather than allowing a client to build or find the service, is the fundamental requirement of the pattern. The pattern separates the creation of a client's dependencies from its own behavior, which allows program designs to be loosely coupled and to follow the dependency inversion and single responsibility principles.

It directly contrasts the service locator pattern, which allows clients to know about the system they use to find dependencies.

Ninject allows you to embrace change in your software's design, so it will be easier to adjust it to match changing business needs and expectations. Ninject helps you use the technique of dependency injection to break your applications into loosely-coupled, highly-cohesive components, and then glue them back together in a flexible manner.

Ninject - Dependency injector for .NET

Implementing Dependency Injection in asp.net MVC 4 using Ninject DI Container

.Net DI Container Speed Test