2009-02-12 10 views
1

Dans mon application .NET, j'autorise les utilisateurs à ajouter leurs plugins. Cependant, j'ai plusieurs fonctions d'aide qui les aideront.Comment fournir l'accès aux fonctions d'aide pour les plugins?

Quelle est la meilleure façon de donner accès à ces fonctions pour les plugins? Dois-je simplement ajouter une nouvelle DLL au projet et mettre toutes les méthodes/classes auxiliaires là-bas et dire aux développeurs de plugins de lier cette DLL?

Je suis actuellement en train de concevoir ce système, je n'ai jamais développé de système de plugin auparavant, donc je ne veux pas prendre une décision stupide.

Répondre

2

Je ne pense pas qu'il y ait quelque chose de mal dans l'approche de l'ajout d'une DLL au projet et de fournir cela comme votre mécanisme "d'aide". Cependant, gardez à l'esprit que vous n'aurez aucun contrôle sur la façon dont ils instancient les classes dans votre DLL, et toutes les entrées de toutes les fonctions devront être vérifiées pour s'assurer qu'elles sont valides, pas nulles, etc.

Une autre idée serait de fournir une interface qui a les fonctions auxiliaires (ou même les références d'autres interfaces auxiliaires) et de transmettre cela au plugin. De cette façon, vous n'avez pas à vous soucier de la création d'objets, et le vecteur d'utilisation des compléments serait limité à ce que vous exposeriez dans l'interface.

+0

Pour ceux qui n'ont pas le temps d'investir dans un autre cadre, je suis totalement d'accord. –

1

Le Managed Extensibility Framework (MEF) a été créé avec l'idée d'ajouter des plugins à votre code

MEF Programming Guide

+0

Savez-vous comment cela dans MEF? J'ai implémenté MEF avec une interface et ça marche très bien mais qu'en est-il des fonctions d'aide? Je ne pouvais pas voir de page à ce sujet. –

1

En fin de compte vous exposer votre API à travers des ensembles, donc oui, il est probablement plus facile de mettre toutes les classes , les méthodes statiques, etc. qui sont destinées à faire partie de l'API dans un seul ensemble, de sorte que vos rédacteurs de plug-in auront un point de référence unique.

Questions connexes