It aims to allow .NET application developers to discover and use extensions with no configuration required.
It also aims to let extension developers encapsulate code easily and avoid fragile hard dependencies.
It was later improved with the release of .NET 4.5 by adding support for generic types and the introduction of a convention-based extension model.
Without MEF, any application that wants to support a plugin model needs to create its own infrastructure from scratch.
A catalog is responsible for discovering extensions and the container coordinates creation and satisfies dependencies.