我正在尝试在Silverlight客户端中实现Logout操作。
在登录操作期间,MEF使用[Export] -ed单例类的实例初始化DefaultContainer,其中包含用户特定信息(如密码)。
有没有办法,重新初始化/重置/删除MEF基础设施/ DefaultContainer,就像它从未初始化一样?
我想在用户成功执行注销操作后再次导航到“登录”页面...
答案 0 :(得分:1)
无法重新初始化CompositionHost容器。默认情况下初始化或创建后,无法更改。
但是,您可以创建一个AggregateCatalog并使用TypeCatalog,将singleton作为唯一类型,并在不再需要时从聚合中删除它。
这并没有改变以下事实:一旦MEF创建了“部分”,它就可以满足任何其他需要它的[导入]。
来自MSDN:
默认容器创建的用于填充导入的部件将由Managed Extensibility Framework(MEF)保留,直到应用程序关闭。长期运行的应用程序应该使用ExportFactory< T>管理其各部分的生命周期。