2009-12-06 2 views
2

De nombreuses applications populaires telles que Wordpress, WHMCS et la plupart des forums PHP permettent aux plugins de se connecter aux événements applicatifs principaux (enregistrement, connexion, création de message, etc.) en spécifiant simplement une fonction avec un nom particulier.Configuration des hooks d'application - C#/ASP.NET

Je comprends que ces applications ne sont pas pré-compilées, mais est-il possible de faire quelque chose du genre avec C#? J'ai regardé dans les gestionnaires d'événement, mais il semble que vous ne pouvez accomplir ceci que si le plugin a la capacité d'instancier la classe que nous voulons accrocher (ou du moins c'est ce que la recherche m'a conduit)

Idéalement, ces hooks seraient dans des événements/méthodes de classe de couche métier et peuvent être accrochés dans par plusieurs objets, de sorte qu'il fonctionnerait dans WinForms ou ASP.NET MVC.

Répondre

1

Il existe une livraison de framework AddIn avec .NET 3.5. Le framework fournit des mécanismes très puissants pour exposer les interfaces par une application hôte et gérer, charger dynamiquement des addins, etc.

0

Pourquoi le concept de base qui me vient à l'esprit, est-ce que Dependency Injection? Je n'ai jamais joué avec un plug-in dans aucune de mes applications. Est-ce que DI pourrait aider de toute façon avec ça?

+0

Est-ce une réponse? –

+0

Si quelqu'un approuve technologiquement, c'est peut-être le cas! –

2

Si vous concevez votre application pour l'extensibilité, c'est facile. Le Managed Extensibility Framework est conçu pour exactement ce genre de scénario, et le rend très facile.

Il sera inclus dans le cadre de base de .NET 4, mais est téléchargeable maintenant pour une utilisation dans 3.5.

+0

Peut-être aussi utile: MEF contre System.AddIn http://social.msdn.microsoft.com/forums/en-US/MEFramework/thread/cf6b7cbc-1123-4b32-9810-c235d9606b66 – Alex

0

Specifics sur notre senerio serait utile, mais en général, vous pouvez explorer le fournisseur psttern.

Il y a 3 éléments: - Une abstraction d'un morceau de fonctionnalité, (Interface/BaseClass) - Une méthode d'usine qui ressemble à config pour déterminer quel type de classe pour créer - [votre] classe personnalisée qui étend/implémente l'abstraction. par exemple, une classe de fournisseur d'appartenance qui renvoie une source dasta personnalisée pour les informations utilisateur.

Ceci est très utile lors du changement de logique. Si vous voulez créer une application avec des composants d'interface utilisateur interchangeables, c'est une autre histoire.

Il existe un support pour cela dans ASP.NET, en commençant par 2.0. Plus d'info sur le provider: http://msdn.microsoft.com/en-us/library/ms972319.aspx

+0

Brian Intéressant, à la sortie de curiosité, comment créeriez-vous des composants d'interface utilisateur permutables? – ram

+0

Ram, Honnêtement, pas sûr. Je ne suis pas au courant d'une manière bien définie/standard d'appracher ceci. Je ne pense pas que ce soit simple dans le contexte d'ASP.NET. –

Questions connexes