Domanda

Ho usato MEF per alcuni progetti sul lavoro e ho appena fissò pasticciare con la monorotaia nel mio tempo libero. Mi chiedevo se ci fosse un modo che potrei usare MEF per caricare i controller che utilizza monorotaia. Monorotaia sembra cercare per i controllori nelle assemblee che si elencano nel web.config:

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

C'è un modo che 'my.assembly' può quindi utilizzare MEF di caricare più controller? Devo ammettere che non ho però di una ragione avrei bisogno di questa funzionalità, ma sto solo cercando le cose!

È stato utile?

Soluzione

monorotaia è un framework molto estensibile. Quasi tutto è stato fornito da un servizio che può essere facilmente commutata con qualcos'altro. Per esempio, l'integrazione IoC è abbastanza facile, come è possibile cambiare i servizi che crea regolatori, filtri, aiutanti, e tutti gli altri soggetti della monorotaia.

Esempio concreto: Integrazione contenitore Windsor in monorotaia

Ora Questo imposta quasi tutto nella monorotaia a cura di Windsor. Se si desidera solo controllori che devono essere forniti dal MEF, c'è anche meno lavoro.

ho molto poca conoscenza del MEF lavorando quindi potrebbe essere un po 'fuori, ma si otterrebbe l'idea generale:

  1. meccanismi di scoperta Usa MEF per individuare tipi di controller, quindi aggiungere tipi di controller per il servizio predefinito IControllerTree. dare uno sguardo a MonoRailFacility.cs di ispirazione.
  2. Implementare una MefControllerFactory : IControllerFactory che utilizzerà MEF ai controller istanziare quando necessario. L'ispirazione è a WindsorControllerFactory.cs

Altri suggerimenti

Non è qualcosa che si può usare ancora, ma dare un'occhiata al post del blog di Hammett qui , dove si parla di quello che sta Prototyping per monorotaia 3.0 (incluso il supporto per MEF per impostazione predefinita).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top