Лучшего решения не существует, оно будет зависеть от дизайна ваших приложений. MEF не является контейнером IoC общего назначения (в отличие от Unity, Autofac и т. Д.), И его основное внимание уделяется обнаружению типов и их составу.
Подходит для составных приложений, где расширения могут быть обнаружены во время выполнения и интегрированы в оболочку приложения. Его сила в том, что поддерживающие сборки можно поместить в указанную папку и получить без дополнительной работы.
Unity и т. Д. Имеют более общее назначение и предоставляют возможности, выходящие за пределы MEF, и в дополнение к компоновке объектов также ориентированы на другие измерения DI, такие как управление временем жизни и перехват.
Ничто не мешает вам использовать как MEF для поддержки расширений / плагинов, так и более универсальный контейнер IoC, такой как Unity / Autofac / Castle Windsor, для общей инфраструктуры DI приложений.
Если вы новичок в DI, то, возможно, пока что пользуетесь MEF, поскольку он предложит все необходимые вам функции компоновки объектов, и Роб уже предоставил реализацию Bootstrapper, которая использует MEF.