I have released an early version of a Dependency injection framework I am developing. Yes another one!
NDependencyInjection is being used in a real application and is under heavy development. I intend it to be very opinionated. It will make writing apps the way I write them easy.
First decision: Only support constructor injection.
This decision is not without it's complications. Not least of which is 'what do you do about objects that refer to each-other?'. Luckly I have a solution to this problem. The injection framework in-fact automatically solves these loops.
Second decision: Applications should be built in layers.
When assembling the complex network of simple objects that make up a good design. You group them into sub-assemblies and these into bigger assemblies until you have your final application.
Within the Application there are objects that you only have one instance of. These are by definition Singletons.
Within the sub-assemblies you get classes that act as Singletons, but only within that scope. You may have several instances in your application, but the individual sub-system only has one, and all references to that type refer to the same instance. In all respects this is a ScopedSingleton.
The framework supports Scopes and Singletons.
More on this later.
Anyway.. for now.. you can get at an early release version from NDependencyInjection.