Относительно вашего второго вопроса (№2 выше) ...
Используя окно QuickWatch (Shift + F9) или обычное окно просмотра, скопируйте туда следующее:
((System.ComponentModel.Composition.Hosting.CompositionContainer)(this.Container))._catalogExportProvider._activatedParts
В строке выше предполагается, что объект, на котором вы остановились, имеет свойство this.Container, которое является CompositionContainer области действия, на которую вы ссылаетесь.
Оттуда вы получите массив ActivatedParts. Затем вы перемещаетесь по словарю деталей. Найдите определение детали, для которого вы хотите найти экземпляр, и разверните его «Непубличные члены». Там вы найдете CachedInstance
, и это будет экземпляр вашей "Совместно используемой" экспортированной детали, которая была создана.
Я думаю, что части, которые экспортируются как NonShared и не IDisposable, не кэшируются и не хранятся вообще. По крайней мере, такое поведение я видел.