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...