Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>The solution is to implement <a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.idependencyresolver%28v=vs.98%29.aspx">System.Web.Mvc.IDependencyResolver</a> and <a href="http://msdn.microsoft.com/en-us/library/system.web.http.dependencies.idependencyresolver%28v=vs.108%29.aspx">System.Web.Http.Dependencies.IDependencyResolver</a> and register your implementation with ASP.NET MVC and ASP.NET Web API respectively, in your <code>Application_Start</code> method.</p> <p>In this example we'll create a class <code>MefConfig</code>, which implements a method <code>RegisterMef</code> that gets called from <code>Application_Start</code> in order to install our dependency resolver. The class <code>MefDependencyResolver</code> implements both <code>System.Web.Mvc.IDependencyResolver</code> and <code>System.Web.Http.Dependencies.IDependencyResolver</code> and, as such, handles dependency resolution duties for both MVC and Web API.</p> <p><strong>Application_Start, Put This in Your Global.asax.cs:</strong></p> <pre><code>public class WebApiApplication : System.Web.HttpApplication { protected void Application_Start() { [...] MefConfig.RegisterMef(); } } </code></pre> <p><strong>MefDependencyResolver and MefConfig:</strong></p> <pre><code>/// &lt;summary&gt; /// Resolve dependencies for MVC / Web API using MEF. /// &lt;/summary&gt; public class MefDependencyResolver : System.Web.Http.Dependencies.IDependencyResolver, System.Web.Mvc.IDependencyResolver { private readonly CompositionContainer _container; public MefDependencyResolver(CompositionContainer container) { _container = container; } public IDependencyScope BeginScope() { return this; } /// &lt;summary&gt; /// Called to request a service implementation. /// /// Here we call upon MEF to instantiate implementations of dependencies. /// &lt;/summary&gt; /// &lt;param name="serviceType"&gt;Type of service requested.&lt;/param&gt; /// &lt;returns&gt;Service implementation or null.&lt;/returns&gt; public object GetService(Type serviceType) { if (serviceType == null) throw new ArgumentNullException("serviceType"); var name = AttributedModelServices.GetContractName(serviceType); var export = _container.GetExportedValueOrDefault&lt;object&gt;(name); return export; } /// &lt;summary&gt; /// Called to request service implementations. /// /// Here we call upon MEF to instantiate implementations of dependencies. /// &lt;/summary&gt; /// &lt;param name="serviceType"&gt;Type of service requested.&lt;/param&gt; /// &lt;returns&gt;Service implementations.&lt;/returns&gt; public IEnumerable&lt;object&gt; GetServices(Type serviceType) { if (serviceType == null) throw new ArgumentNullException("serviceType"); var exports = _container.GetExportedValues&lt;object&gt;(AttributedModelServices.GetContractName(serviceType)); return exports; } public void Dispose() { } } public static class MefConfig { public static void RegisterMef() { var asmCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()); var container = new CompositionContainer(asmCatalog); var resolver = new MefDependencyResolver(container); // Install MEF dependency resolver for MVC DependencyResolver.SetResolver(resolver); // Install MEF dependency resolver for Web API System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver = resolver; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload