Dependency Injection doesn't know about type that I want to inject

Viewed 140

I want to use HaveBox for Dependency Injection. But it isn't question about HaveBox. So I created base controller:

public abstract class BaseController : Controller
    {
        protected  readonly IRepository m_Repository;

        protected BaseController(IRepository repository)
        {
            m_Repository = repository;
        }
    }

And my HomeController was inherited from BaseController. Add HaveBoxConfig.RegisterTypes(); to Application_Start method and implementation of HaveBoxConfig is:

 public class HaveBoxConfig
    {
        public static void RegisterTypes()
        {
            var container = new Container();
            container.Configure(config => config.For<IService>().Use<Service>());
            container.Configure(config => config.For<IRepository>().Use<Repository>());
            IDependencyResolver resolver = DependencyResolver.Current;
            var newResolver = new MyResolver(container, resolver);
            DependencyResolver.SetResolver(newResolver);
        }
    }

And my resolver:

public class MyResolver : IDependencyResolver
    {
        private readonly IContainer m_container;
        private readonly IDependencyResolver m_resolver;
        public MyResolver(IContainer container, IDependencyResolver resolver)
        {
            m_container = container;
            m_resolver = resolver;
        }
        public object GetService(Type serviceType)
        {
            try
            {
                return m_container.GetInstance(serviceType);
            }
            catch (Exception ex)
            {
                return m_resolver.GetService(serviceType);
            }
        }
        public IEnumerable<object> GetServices(Type serviceType)
        {
            return m_resolver.GetServices(serviceType);
        }
    }

Method GetService called for next types: IControllerFactory, IControllerActivator, HomeController but not for my IRepository.

What am I doing wrong? Why DI isn't executed for IRepository?

2 Answers
Related