MEF。如何清理默认容器?

时间:2010-08-30 10:48:47

标签: c# silverlight-4.0 mef

我正在尝试在Silverlight客户端中实现Logout操作。

在登录操作期间,MEF使用[Export] -ed单例类的实例初始化DefaultContainer,其中包含用户特定信息(如密码)。

有没有办法,重新初始化/重置/删除MEF基础设施/ DefaultContainer,就像它从未初始化一样?

我想在用户成功执行注销操作后再次导航到“登录”页面...

1 个答案:

答案 0 :(得分:1)

无法重新初始化CompositionHost容器。默认情况下初始化或创建后,无法更改。

但是,您可以创建一个AggregateCatalog并使用TypeCatalog,将singleton作为唯一类型,并在不再需要时从聚合中删除它。

这并没有改变以下事实:一旦MEF创建了“部分”,它就可以满足任何其他需要它的[导入]。

来自MSDN

默认容器创建的用于填充导入的部件将由Managed Extensibility Framework(MEF)保留,直到应用程序关闭。长期运行的应用程序应该使用ExportFactory< T>管理其各部分的生命周期。