I apparently missed the release of Unity 1.0 in April, but another update has been released for May, Unity 1.1. If you are not familiar with Unity, it is a lightweight, extensible dependency injection container. It facilitates building loosely coupled applications and provides developers with the following advantages:
- Simplified object creation, especially for hierarchical object structures and dependencies
- Abstraction of requirements; this allows developers to specify dependencies at run time or in configuration and simplify management of crosscutting concerns
- Increased flexibility by deferring component configuration to the container
- Service location capability; this allows clients to store or cache the container
Unity works with .NET Framework v2.0+ and was designed to achieve the following goals:
- To promote the principles of modular design through aggressive decoupling
- To raise awareness of the need to maximize testability when designing applications
- To provide a fast and lightweight dependency injection container mechanism for creating new object instances and managing existing object instances
- To expose a compact and intuitive API for developers to work with the container
- To support a wide range of code languages, with method overrides that accept generic parameters where the language supports these
- To implement attribute-driven injection for constructors, property setters, and methods of target objects
- To provide extensibility through custom and third-party container extensions
- To provide the performance required in enterprise-level line-of-business (LOB) applications
You can read an introduction to Unity here.