MEF. Как очистить контейнер по умолчанию? - PullRequest
4 голосов
/ 30 августа 2010

Я пытаюсь реализовать операцию выхода из системы в моем клиенте Silverlight.

Во время операции входа в систему MEF инициализирует DefaultContainer экземплярами одноэлементных классов [Export], которые содержат информацию о пользователе (например, пароль).

Есть ли способ, чтобы повторно инициализировать / сбросить / удалить инфраструктуру MEF / DefaultContainer, как это никогда не было инициализировано?

Я бы хотел снова перейти на страницу входа после того, как пользователь успешно выполнил операцию выхода ...

1 Ответ

1 голос
/ 01 сентября 2010

Невозможно повторно инициализировать контейнер CompositionHost.Как только он был инициализирован или создан по умолчанию, его нельзя изменить.

Однако вы можете создать AggregateCatalog и использовать TypeCatalog с одиночным типом в качестве единственного типа и удалить его из агрегата, когда он больше не нужен.

Это не меняет того факта, что как только MEF создает «деталь», она становится доступной для любого другого [Импорт], который в этом нуждается.

От MSDN :

Детали, созданные контейнером по умолчанию для заполнения импорта, будут храниться в среде Managed Extensibility Framework (MEF) до тех пор, пока приложение не закроется.Долгосрочные приложения должны использовать ExportFactory для управления жизненными циклами своих компонентов.
...