Why use Ninject?
Ninject is a lightweight Dependency Injection framework for .NET applications. It helps you split your application into a collection of loosely-coupled, highly-cohesive pieces, and then glues them back together in a flexible manner. By using Ninject to support your software's architecture, your code will become easier to write, reuse, test, and modify. Instead of relying on reflection for invocation, Ninject takes advantage of lightweight code generation in the CLR (Common Language Runtime). This can result in a dramatic (8-50x) improvement in performance in many situations. Ninject includes many advanced features. For example, Ninject was the first dependency injector to support contextual binding, in which a different concrete implementation of a service may be injected, depending on the context in which it is requested. Ninject supports most major facilities offered by the competing frameworks (although, many such elements live in extensions: plugin modules that layer on facilities on top of the core). You can have a look at the Ninject official wiki at https://github.com/ninject/ninject/wiki for a more detailed list of Ninject features which makes it one of the top DI containers.