Skip to content

Instantly share code, notes, and snippets.

@jacobe
Created June 18, 2012 08:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jacobe/2947483 to your computer and use it in GitHub Desktop.
Save jacobe/2947483 to your computer and use it in GitHub Desktop.
NinjectResolver & NinjectScope for ASP.NET Web API
public class NinjectResolver : NinjectScope, IDependencyResolver
{
private readonly IKernel _kernel;
public NinjectResolver(IKernel kernel) : base(kernel)
{
_kernel = kernel;
}
public IDependencyScope BeginScope()
{
return this;
}
public override void Dispose()
{
_kernel.Dispose();
}
}
public class NinjectScope : IDependencyScope
{
private readonly IResolutionRoot _resolutionRoot;
public NinjectScope(IResolutionRoot resolutionRoot)
{
_resolutionRoot = resolutionRoot;
}
public virtual void Dispose()
{
// Don't dispose the kernel in a dependency scope
}
public object GetService(Type serviceType)
{
IRequest request = _resolutionRoot.CreateRequest(serviceType, null, new Parameter[0], true, true);
return _resolutionRoot.Resolve(request).SingleOrDefault();
}
public IEnumerable<object> GetServices(Type serviceType)
{
IRequest request = _resolutionRoot.CreateRequest(serviceType, null, new Parameter[0], true, true);
return _resolutionRoot.Resolve(request).ToList();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment