see also Which C#/.NET Dependency Injection frameworks are worth looking into?
There are now many dependency injection frameworks to choose from. You used to often be forced to use a given dependency injection framework due to a library you were using. However the Common Service Locator library has enabled library code to be independent of injection frameworks.
The time it takes to learn all of them well enough to decide which to use is unreasonable. I don’t believe that we have yet reached a stage that we can talk about the best dependency injection framework. So what questions should I be asking about the project and myself to help decide on the best dependency injection framework to use in a given case?
It would also be useful to know why you choose the dependency injection framework you are currently using and if you are still happy with that choose.
Is there yet a useful vocabulary to use when comparing the styles of dependency injection frameworks?
Does the Service Locator library work in real life, or are you skill forced to use lots of different dependency injection frameworks in the same project?
How easy is to refractor you code with each Dependency Injection Framework, e.g do tools like ReSharper work well with a given framework?
I think the choice comes down to finding a framework that meets your requirements and then personal preference.
Does your project already use a library such as rhino-tools that already integrates with a DI framework? If it does, that might be a good starting point if you want to avoid using "lots of different dependency injection frameworks".
Check out these two posts:
FYI, just this morning I came across an interesting comparison between all the .NET IoC containers here:
http://elegantcode.com/2009/01/07/ioc-libraries-compared/
A handful of questions:
On a personal note:
I've used StructureMap for the same reasons mentioned in the blog I linked. I think Xml config is a giant pain to maintain and, especially, debug (see WCF). I haven't tried Ninject yet, but based on their marketing, it must be super rad!
I would disagree with that statement for Unity; you can write
and do your setup in code using a fluent-style interface. Personally I like Unity.
It's hard to answer which framework is 'best', but I can tell you which framework is the easiest: The Simple Injector:
http://simpleinjector.codeplex.com/
Shameless plug btw ;-)