Skip to content

Instantly share code, notes, and snippets.

@johnkors
Forked from paigecook/NinjectKernelActivator.cs
Created January 22, 2013 13:11
Show Gist options
  • Save johnkors/4594577 to your computer and use it in GitHub Desktop.
Save johnkors/4594577 to your computer and use it in GitHub Desktop.
using System;
using System.Net.Http;
using System.Web.Http.Controllers;
using System.Web.Http.Dispatcher;
using Ninject;
namespace WebApiNinjectIHttpControllerActivator
{
public class NinjectKernelActivator: IHttpControllerActivator
{
private readonly IKernel _kernel;
public NinjectKernelActivator(IKernel kernel)
{
_kernel = kernel;
}
public IHttpController Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)
{
var controller = (IHttpController) _kernel.Get(controllerType);
request.RegisterForDispose( new Release(()=> _kernel.Release(controller)));
return controller;
}
}
internal class Release : IDisposable
{
private readonly Action _release;
public Release(Action release)
{
_release = release;
}
public void Dispose()
{
_release();
}
}
}
@johnkors
Copy link
Author

Hvorfor benytte IHttpControllerActivator og ikke IDependencyResolver i ASP.NET WebApi:

http://blog.ploeh.dk/2012/09/28/DependencyInjectionAndLifetimeManagementWithASPNETWebAPI.aspx

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment