I found Seemann's post on DI and WebAPI:
http://blog.ploeh.dk/2012/10/03/DependencyInjectionInASPNETWebAPIWithCastleWindsor.aspx[
^]
Once adapted to use Unity instead of CW, I made it work.
This is my implementation:
public class UnityCompositionRoot : IHttpControllerActivator
{
private readonly IUnityContainer container;
public UnityCompositionRoot(IUnityContainer container)
{
this.container = container;
}
public IHttpController Create(HttpRequestMessage request,
HttpControllerDescriptor controllerDescriptor, Type controllerType)
{
var controller = (IHttpController)this.container.Resolve(controllerType);
return controller;
}
}
Then in Global.asax in
Application_Start()
I did the following:
UnityContainer container = new UnityContainer();
container.RegisterType<IBookService, BookService>();
GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerActivator),
new UnityCompositionRoot(container));
Hope it helps.
Cheers