Я думаю, что ответ зависит от того, как Части (используя терминологию MEF) используются в приложении. Я бы создал и заполнил контейнеры в соответствии с тем, где / как используются детали.
Пример:
Если вы создаете детали, содержащие представления для GUI, я думаю, что слой GUI в приложении будет загружать их и управлять контейнером.
У меня есть структура приложения, которую я создал для плагинов клиентских приложений, и в ней есть статический класс диспетчера приложений, который загружает компоненты для приложения, но затем я также загружаю компоненты в контейнер, который используется моей основной логикой , Цель этих двух действий совершенно иная, потому что некоторые из них - это основные концепции, которые я хотел бы легко заменить позже, а некоторые - плагины пользовательского интерфейса, которые расширяют функциональные возможности клиента, когда они добавляются и становятся доступными для приложения.
Кроме того, они загружаются с использованием разных подходов ... ядро запускается только при использовании определенных правил, а другое загружает все из каталога (плагинов).