Book Image

Mastering Ninject for Dependency Injection

By : Daniel Baharestani
Book Image

Mastering Ninject for Dependency Injection

By: Daniel Baharestani

Overview of this book

Dependency injection is an approach to creating loosely coupled applications. Maintainability, testability, and extensibility are just a few advantages of loose coupling. Ninject is a software library which automates almost everything that we need in order to implement a dependency injection pattern. Mastering Ninject for Dependency Injection will teach you everything you need to know in order to implement dependency injection using Ninject in a real-life project. Not only does it teach you about Ninject core framework features that are essential for implementing dependency injection, but it also explores the power of Ninject's most useful extensions and demonstrates how to apply them. Mastering Ninject for Dependency Injection starts by introducing you to dependency injection and what it's meant for with the help of sufficient examples. Eventually, you'll learn how to integrate Ninject into your practical project and how to use its basic features. Also, you will go through scenarios wherein advanced features of Ninject, such as Multi-binding, Contextual binding, providers, factories and so on, come into play. As you progress, Mastering Ninject for Dependency Injection will show you how to create a multilayer application that demonstrates the use of Ninject on different application types such as MVC, WPF, WCF, and so on. Finally, you will learn the benefits of using the powerful extensions of Ninject.
Table of Contents (12 chapters)

Dynamic factories

As long as we know all the dependencies of a class and in scenarios where we only need one instance of them, it is easy to introduce a list of the dependencies in the constructor of the class. But there are cases where we may need to create more instances of a dependency in a class as a single instance that Ninject injects is not enough. There are also cases where we don't know which services a consumer may require, because it may require different services in different circumstances, and it doesn't make sense to instantiate all of them while creating the class. In such scenarios, factories can help. We can design our class so that it depends on a factory, rather than the objects that the factory can create. Then, we can command that factory to create the required services on demand and in any required number.

We will see two examples each of which addresses one of the preceding cases and demonstrates the solution that Ninject offers.

The Shape Factory example

In the first...