2010-08-30 5 views
4

J'essaye d'implémenter l'opération de Déconnexion dans mon client Silverlight.MEF. Comment nettoyer le conteneur par défaut?

Pendant l'opération de connexion, MEF initialise DefaultContainer avec des instances des classes singleton [Export] -ed, qui contiennent des informations spécifiques à l'utilisateur (comme le mot de passe).

Existe-t-il un moyen de réinitialiser/réinitialiser/supprimer l'infrastructure MEF/DefaultContainer comme si elle n'avait jamais été initialisée?

Je voudrais accéder à la page de connexion à nouveau après que l'utilisateur effectue avec succès l'opération ... Se déconnecter

Répondre

1

Il est impossible de réinitialiser le récipient CompositionHost. Une fois initialisé ou créé par défaut, il ne peut plus être modifié.

Vous pouvez cependant créer un catalogueAgrégate et utiliser un typeCatalogue avec le singleton comme seul type et le retirer de l'agrégat lorsqu'il n'est plus nécessaire.

Cela ne change rien au fait qu'une fois qu'une 'partie' est créée par MEF, elle est disponible pour satisfaire tout autre [Import] qui en a besoin.

De MSDN:

Les pièces créées par le conteneur par défaut pour remplir les importations seront conservés par le Cadre Extensibilité (MEF) géré jusqu'à ce que l'application se ferme. Les applications à exécution longue doivent utiliser ExportFactory < T> pour gérer les cycles de vie de leurs pièces.

Questions connexes