Я исследую MEF как решение для разрешения плагинов в нашем существующем приложении .NET.
Во всех примерах, которые я могу найти, основное приложение создает экземпляр CompositionContainer и вызывает container.ComposeParts (this).
Проблема в том, что мое приложение не полностью построено на MEF, поэтому в графе объектов есть дыра, в которой нет компонентов MEF. Итак, моя иерархия объектов может выглядеть так:
Приложение (контейнер MEF) -> ObjectB (без MEF) -> ObjectA (требуется импорт MEF)
В этой иерархии объектов я не могу вызвать container.ComposeParts (this) в приложении и ожидать, что приложение создаст ObjectB и удовлетворит Imports ObjectA.
Является ли хорошей практикой глобальное раскрытие CompositionContainer, чтобы я мог составить ObjectA позже, чем при запуске приложения, или мне нужно реструктурировать все свое приложение для поддержки линейного графа объектов MEF?