So I have been exploring DI Frameworks lately (Dependency Injection), and there are a couple of solutions. While I kind of like the metadata approach vs. the XML Configuration one there really isn't anything available yet. You have ObjectBuilder, but its only a DI Framework, it doesn't include a DI Container so you are left to build your own container, which includes setting up all of your strategies, context, etc. The CodePlex guys are apparently working on an ObjectBuilder v2 which they are trying to get vetted by the P&P team at Microsoft.
So the choices are:
Spring.NET
StructureMap
Castle Windsor Container
I have been evaluating these mostly because of a hobby project I am working on called VistaTune, I would like to use a DI Framework and the current changeset that is checked in is using Spring.NET but I am not happy with Spring.NET for a couple of reasons. First there is no real way to control your dependency injection dynamically, its all configuration based. Secondly there is no way to inject an instance into your container, for example during unit testing I would like to inject a mock to override the real instance that is mapped in the configuration. Thirdly there is no DSL (Domain Specific Language), and appears to be no DSL planned for the future release.
Note: After posting this Jeremy D. Miller the developer of StructureMap updated me, the current version of StructureMap v2.0 already has DSL but the next version is being extended with even more. See the comments section below, also visit his blog here for more information.
For those reasons, I am leaning towards using StuctureMap, which in current release has no DSL but next release will which is already in testing so its pretty much done. It supports container injection, and it allows you to reset your injection so you can revert back to the original container before injection which is really cool. It also supports interception, among other things that are out of the scope of my assessment.
So which DI Framework? It is a difficult question to answer, and I really think it will be interesting to see what comes about from the current top runners at the moment. I expect to see big things from Microsoft on ObjectBuilder, especially since they just released their PIAB (Policy Injection Application Block) which is their solution to an AOP (Aspect Oriented Programming) Framework. I would personally rather see PIAB stay isolated by itself, I prefer small isolated Frameworks rather than huge bloated ones that you only want to use for a single thing.