Детали, созданные с помощью политики Shared Creation, будут храниться в контейнере и будут иметь общий срок службы контейнера.
Даже если общая часть используется для заполнения импорта на удаленных объектах, эта часть все равно будет существовать с контейнером.
Вот способы обойти это:
1: Измените политику создания для части на NonShared, используя следующий атрибут в вашем экспорте:
[PartCreationPolicy(CreationPolicy.NonShared)]
2: Вы можете освободить определенную деталь, используя метод ReleaseExport для контейнера ( doc doc ). Обратите внимание, что это снова будет работать только с частями NonShared.
3: использовать дочерний контейнер для вашей общей части ( doc ). Таким образом, вы можете избавиться от дочернего контейнера, который, в свою очередь, избавится от его общих частей. Вы можете использовать дочерний контейнер при использовании, чтобы убедиться, что он утилизируется после использования. Это единственный способ избавиться от разделяемой части в контейнере.
Ох и кстати,
Возможно, есть другие контейнеры IoC,
MEF технически не является контейнером IoC. Он использует концепцию IoC, и вы можете использовать его так же, как контейнер IoC, но это, прежде всего, инфраструктура расширения.