“The common service locator library contains a shared interface for service location which application and framework developers can reference” - (commonservicelocator.codeplex.com)
Wow!
How to get them both working together, is as below.
NOTE: I am assuming that the reader is aware of Dependency Injection pattern & the Common Service Locator.
The Steps:
Download the CommonServiceLocator_MefAdapter.4.0.zip file & extract the MefServiceLocator class written by Glen Block
Create a new ASP.Net MVC 2.0 Web Application Project
Include the MefServiceLocator class into this project
Open the Global.asax.cs file
Make the following code change in the Application_Start event:
protected void Application_Start(){
RegisterDIContainer();
AreaRegisteration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
Write the RegisterDIContainer method as:
protected void RegisterDIContainer(){
var catalog = new AggregateCatalog(
new AssemblyCatalog(Assembly.GetExecutingAssembly()),
new DirectoryCatalog(Server.MapPath(“~/Plugins”))
);
var composition = new CompositionContainer(catalog);
composition.ComposeParts(this);
var mef = new MefServiceLocator(composition);
ServiceLocator.SetLocatorProvider(() => mef);
}
With this in place, you are now good to do:
var controllers = ServiceLocator.Current
.GetAllInstances
Code on…
Комментариев нет:
Отправить комментарий