Frage

Ich habe bei der Arbeit MEF für einige Projekte verwendet und ich habe starrte fast in meiner Freizeit mit Einschienen Messing. Ich frage mich, ob es eine Möglichkeit war, dass ich MEF verwenden könnte den Controller zu laden, die Einschienenbahn verwendet. Einschienen erscheint für Steuerungen in Baugruppen zu sehen, dass Sie in der Web.Config Liste:

<controllers>
  <assembly>my.assembly</assembly>
</controllers>

Gibt es eine Möglichkeit, dass ‚my.assembly‘ können dann MEF verwenden, um mehrere Controller zu laden? Ich muss ich allerdings zugeben, nicht aus einem Grund würde ich diese Funktionalität benötigen, aber ich versuche nur, die Dinge aus!

War es hilfreich?

Lösung

ist Einschienen ein sehr erweiterbares Framework. Fast alles ist durch einen Service zur Verfügung gestellt werden, die sich leicht mit etwas anderem umgeschaltet werden kann. Für zum Beispiel ist IoC Integration ganz einfach, wie Sie die Dienste wechseln können, die Steuerungen, Filter, Helfer und alle anderen Einheiten erzeugt Monorail.

Konkretes Beispiel: Die Integration von Windsor Container in Einschienen

Jetzt Dies stellt fast alles, was in der Einschienenbahn von Windsor zur Verfügung gestellt werden. Wenn Sie nur Controller wollen von MEF zur Verfügung gestellt werden, gibt es noch viel weniger Arbeit.

Ich habe sehr wenig Kenntnisse von MEF so könnte es ein wenig aus, aber man würde die allgemeine Idee bekommen:

  1. Verwenden Sie MEF Ermittlungsmechanismen Controller-Typen zu finden, dann fügen Sie Controller-Typen auf den Standard IControllerTree Service. Werfen Sie einen Blick auf MonoRailFacility.cs für Inspiration.
  2. Implementieren eines MefControllerFactory : IControllerFactory die MEF zu instantiate Controller verwenden werden, wenn nötig. Inspiration ist bei WindsorControllerFactory.cs

Andere Tipps

Es ist nicht etwas, das man noch verwenden, aber einen Blick auf Hammett-Blog-Post hat hier , wo er spricht über das, was er für Einschienen 3.0 (einschließlich der Unterstützung für MEF in der Standardeinstellung) wird das Prototyping.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top