MVC

LightInject.Mvc provides an integration that enables dependency injection in ASP.NET MVC applications.

Installing

LightInject.Mvc provides two distribution models via NuGet

Binary

PM> Install-Package LightInject.Mvc

This adds a reference to the LightInject.Mvc.dll in the target project.

Source

PM> Install-Package LightInject.Mvc.Source

This will install a single file (LightInject.Mvc.cs) into the current project.

Initializing

protected void Application_Start()
{
    var container = new ServiceContainer();
    container.RegisterControllers();        
    //register other services

    container.EnableMvc()              
}

Services

All services that implements IDisposable, must be registered with the PerScopeLifetime to ensure that they are properly disposed when the web request ends.

container.Register<IFoo, Foo>(new PerScopeLifetime());

Controllers are also disposable services and LightInject provides the RegisterControllers method that registers all controllers from a given assembly with the PerRequestLifetime.

container.RegisterControllers(typeof(MyMvcApplication).Assembly);

FilterAttribute

Although filter attributes are instantiated by the MFC infrastructure, LightInject is still able to inject dependencies into properties.

public class FooFilterAttribute : ActionFilterAttribute
{
    public IFoo Foo { get; set; }
}