Best DI Framework: Microsoft Unity Application Block
Change is the lifeblood of a software. So how does DI helps in that? For that you may would want to learn about the history of DI.
Dependency Injection is a design pattern use frequently utilized plug in/component based software architecture. Or in cases where intention is to reusing existing components and wiring together "disparate" components to form a cohesive software architecture. DI is a type of inversion of control; in which the flow of control is "inverted" to the users' or more specifically, to the frameworks' end. And framework decides what to call and what not to call.
You may have been writing manual DI unknowingly; the hand crafted factory pattern (adapter factory, method factory). Its simple, not much is the learning curve, no dependencies, no reflection, everyone knows what calls what in the code. The two types of injections are:
1. Setter injection
2. Constructor injection
With a dependency injection framework there is consistency, which means, on a large team you can actually "push" the team to do things in consistent manner; mostly because of the consistent nature of frameworks. Can define functional scope, rules of instantiation, etc, easily understandable and changeable.
Well, I would, instead writing just another essay repeating `No Silver Bullet` "for the 18,000th time", suggest you read more about the DI framework basic concept and provided by Martin Fowler at his Bliki.
Microsoft Unity Application Block, that now comes with the Enterprise Library as well.
Happy injecting dependencies! (0: