I am trying to use DI in my ASP.NET Web API Controller. Apparently there are a few implementations out there. I was just wondering which of these (Castle, Ninject, unity etc.) w
You don't need a DI Container for this. Here's how to do it by hand:
public class PoorMansCompositionRoot : IHttpControllerActivator
{
public IHttpController Create(
HttpRequestMessage request,
HttpControllerDescriptor controllerDescriptor,
Type controllerType)
{
if (controllerType == typeof(ImportJsonController))
return new ImportJsonController(new MyFilter());
return null;
}
}
You need to tell ASP.NET Web API about this class (e.g. in your Global.asax):
GlobalConfiguration.Configuration.Services.Replace(
typeof(IHttpControllerActivator),
new PoorMansCompositionRoot());
You can read about all the details here: http://blog.ploeh.dk/2012/09/28/DependencyInjectionandLifetimeManagementwithASP.NETWebAPI