2010-01-15 6 views
4

donc laissons d'abord la conception du design. J'ai un combobox avec un bouton, et j'ai un dossier de plugins.comment créer un système de plugin très basique

disons que j'ai un plugin imageeffect.cs dans le dossier plugins. cette classe DOIT avoir des propriétés telles que "title". Mon programme obtient ce "titre" et charge dynamiquement la combobox avec ce titre. Alors maintenant, mon programme reconnaît le plugin. Maintenant, lorsque l'utilisateur clique sur le bouton, je veux que certaines données (traitées par mon programme) soient transmises au plugin imageeffect.cs où il fait tout ce qui fonctionne et me renvoie un statut.

donc récapitulez. mon programme lit un répertoire de plugin. charge la propriété "title" de chaque plugin (définie par mon utilisateur qui crée le plugin) dans la combobox. Lorsque l'utilisateur clique sur le bouton, les "données" ou dans ce cas l'image est envoyée au plugin et le plugin y travaille. il me renvoie alors le "Status" ou dans ce cas une image de retour avec tous les effets qu'il voulait.

+1

Commentaire: le « problème classique » avec architecture plug-in C# a été la difficulté de les contrôler: la norme des solutions « faciles » charger chaque plug-in dans le domaine d'application: cela signifie que vous ne pouvez en décharger aucun sans terminer l'application. Et charger chaque plug-in dans son propre domaine d'application, et le déchargement sélectif, s'est avéré très difficile sans quelques "hacks". C'est pourquoi je vous recommande de suivre la réponse "dtb" ci-dessous pour aller voir MEF qui est spécifiquement conçu pour gérer de tels scénarios (et a beaucoup d'autres fonctionnalités). – BillW

Répondre

8
+0

MEF est pour .NET 4.0, ou est-il compatible avec 2.0/3.0/3.5? – STW

+2

MEF sera inclus dans le Framework .NET 4.0, mais vous pouvez également le télécharger depuis le site web de MEF pour l'utiliser avec les versions précédentes. – dtb