public override void Load()
{
// use Ninject.Extensions.Conventions for easy ISomeType -> SomeType bindings
Kernel.Bind(x => x
.FromAssembliesMatching("Catalogue.*")
.SelectAllClasses()
.BindDefaultInterface());
// inject a once-per-request raven document session
Bind<IDocumentSession>()
.ToMethod(x => WebApiApplication.DocumentStore.OpenSession())
.InRequestScope();
// convenience binding for the asp.net-provided current user
// which is used by the once-per-request user context object
Bind<IPrincipal>().ToMethod(x => HttpContext.Current.User);
Rebind<IUserContext>().To<UserContext>().InRequestScope();
}