2010-08-30 56 views
4

我想在我的Silverlight客户端中实现注销操作。MEF。如何清理默认容器?

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

有没有办法,重新初始化/重置/下降MEF基础设施/ DefaultContainer像它从未初始化?

我想导航到用户成功执行退出操作后,再次登录页面...

回答

1

这是不可能重新初始化CompositionHost容器。一旦它被初始化或默认创建,它就不能被改变。

然而,您可以创建一个AggregateCatalog,并使用TypeCatalog和singleton作为唯一类型,并在不再需要时将其从聚合中移除。

这并不改变这样一个事实:一旦MEF创建'part',它就可以满足任何需要它的[Import]。

MSDN

默认容器创建的用于填充导入的部分将由托管扩展性框架(MEF)保留,直到应用程序关闭。长时间运行的应用程序应该使用ExportFactory管理其部件的生命周期。