Qué es MEF y que te aporta
MEF es una tecnología que permite desarrollar aplicaciones extensibles. La gran ventaja que nos ofrece MEF es que no necesitamos diseñar la aplicación conociendo qué extensiones formaran parte de ella ni la implementación interna de las propias extensiones.
Por extensible nos referimos a que nuestra aplicación puede estar en producción y de forma dinámica añadir, reemplazar, eliminar las extensiones que tenemos sin necesidad ni de recompilar ni reiniciar la aplicación.
MEF viene con .NET Framework 4 en la librería: System.ComponentModel.Composition.
MEF vs IoC Container
Aunque pueda parecer que MEF e IoC ofrecen la misma funcionalidad la diferencia consiste en que tratan de resolver problemas distintos.
El objetivo básico de un framework de IoC es el de ofrecer desacoplamiento entre componentes y nos resuelve dependencias que conocemos. Esto nos permite que nuestra aplicación sea modular y testeable.
En cambio, en MEF, el principal objetivo es la extensibilidad: el desacoplamiento es una consecuencia. Sabemos que las extensiones que se vayan a implementar cumplirán un contrato pero no sabremos si sólo habrá una extensión, muchas o ninguna.