Puis-je charger des contrôleurs en utilisant Monorail MEF?
-
03-10-2019 - |
Question
Je l'ai utilisé pour quelques MEF projets au travail et je l'ai juste regardé fixement vous embêter avec monorail dans mon temps libre. Je me demandais s'il y avait une façon que je pourrais utiliser pour charger les MEF contrôleurs qui utilise monorail. Monorail semble chercher des contrôleurs dans les assemblées que vous listez dans le web.config:
<controllers>
<assembly>my.assembly</assembly>
</controllers>
Est-il possible que my.assembly peut ensuite utiliser pour charger MEF plusieurs contrôleurs? Je dois admettre que je n'ai pas bien d'une raison pour laquelle je aurais besoin de cette fonctionnalité, mais je suis juste essayer des choses!
La solution
Monorail est un cadre très extensible. Presque tout est fourni par un service qui peut être facilement commuté avec autre chose. Pour exemple, l'intégration IoC est assez facile, comme vous pouvez changer les services qui crée des contrôleurs, des filtres, des aides, et toutes les autres entités monorail.
Exemple concret: Intégration conteneur Windsor dans Monorail
Maintenant, ce met en place presque tout dans le monorail à fournir par Windsor. Si vous ne souhaitez que les contrôleurs à fournir par le MEF, il y a encore moins de travail.
Je l'ai très peu de connaissance pratique du MEF de sorte qu'il pourrait être un peu loin, mais vous obtiendrez l'idée générale:
- Utiliser des mécanismes de découverte pour localiser les types MEF de contrôleur, puis ajouter des types contrôleur au service par défaut
IControllerTree
. jetez un coup d'oeil àMonoRailFacility.cs
inspiration. - Mettre en œuvre un
MefControllerFactory : IControllerFactory
qui utilisera aux contrôleurs MEF instancier en cas de besoin. L'inspiration est àWindsorControllerFactory.cs
Autres conseils
Ce n'est pas quelque chose que vous pouvez utiliser encore, mais un coup d'oeil au blog de Hammett ici , où il parle de ce qu'il est pour le prototypage monorail 3.0 (y compris le soutien pour MEF par défaut).