Question

Je suis un peu perdu avec le MEF, le CRG, l'unité ...

Cette question est sur l'architecture de l'application Winform.

J'ai un projet principal qui contient un formulaire principal et d'autres formes;

Parce que je veux inclure modularité , je pense à l'aide d'un système de plug-in.

Ce que je voudrais faire est ouvrir chaque plugin dll lorsque l'application principale est ouverte pour faire référence à chacun avec bouton, barre d'outils ...

Alors je voudrais Éliminez jusqu'à ce qu'ils soient appelés.

Mais je ne veux pas tous les plug-ins à conserver en mémoire .. juste obtenu un bon modèle d'architecture.

Alors d'abord à propos de .NET: Est-ce que dotNet garder seulement référence pour les plug-ins dll en mémoire ou tout le code du plugin ?

Je pense à l'aide avec MEF LAZY collection d'importation, mais je dois les instancier d'abord pour obtenir mes informations boutons. Donc, deuxième question

Si je mets l'importation Collection null et Lauch la fonction compose () à nouveau, les plug-ins sera charge ou attendre jusqu'à ce que l'appel soit charge (paresseux)?

Était-ce utile?

La solution

Alors je voudrais les disposer jusqu'à ce qu'ils soient appelés.

Au lieu d'inspecter des objets importés, puis les jeter, vous devez inspecter l'importation sur CodePlex MEF.

Je pense à l'aide du MEF avec la collection LAZY d'importation

L'utilisation des importations paresseux empêchera pas nécessairement des assemblages d'être chargés. Si vous avez une référence à un objet Lazy<IFoo>, au moins doit être chargé contenant l'ensemble IFoo. Et comme je l'ai expliqué plus haut, contenant l'ensemble de la mise en œuvre IFoo exporté aura également été chargé à ce moment-là.

L'utilisation Lazy ne fera que repousser l'invocation de certains constructeurs, espérons-le résultat de votre application plus rapide de démarrage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top