Possible duplicate:
MVC3 + Ninject - How?
In a small mvc 4 project, I am trying to inject dependency injection using ninject.
So far, I have worked with api controllers, but I have not been lucky with regular controllers.
I have a NinjectResolver:
public class NinjectDependencyResolver : NinjectDependencyScope, IDependencyResolver { private readonly IKernel _kernel; public NinjectDependencyResolver(IKernel kernel) : base(kernel) { _kernel = kernel; } public IDependencyScope BeginScope() { return new NinjectDependencyScope(_kernel.BeginBlock()); } public override void Dispose() { _kernel.Dispose(); } }
And NinjectScope:
public class NinjectDependencyScope : IDependencyScope { protected IResolutionRoot ResolutionRoot; public NinjectDependencyScope(IResolutionRoot kernel) { ResolutionRoot = kernel; } public object GetService(Type serviceType) { var request = ResolutionRoot.CreateRequest(serviceType, null, new Parameter[0], true, true); return ResolutionRoot.Resolve(request).SingleOrDefault(); } public IEnumerable<object> GetServices(Type serviceType) { var request = ResolutionRoot.CreateRequest(serviceType, null, new Parameter[0], true, true); return ResolutionRoot.Resolve(request).ToList(); } public void Dispose() { var disposable = (IDisposable)ResolutionRoot; if (disposable != null) disposable.Dispose(); ResolutionRoot = null; } }
Then I installed it in my Global.asax:
var kernel = new StandardKernel(); kernel.Bind(typeof(IRepository)).To(typeof(Repository)); GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
Then I insert the repository into the api controller as follows:
private IRepository _repository; public TestApiController(IRepository repository) { _repository = repository; }
This works fine, but doing the same in a regular controller fails with the error "Without parameters without constructor for this object."
Any ideas?