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