Search code examples
asp.net-mvcasp.net-mvc-4inversion-of-control

Inconsistent accessibility parameter type error while Injecting Service to Controller-Constructor


while Injecting Service to Controller shows error "Inconsistent accessibility:parametertype 'IProductRepository' is less accessible than method 'ProductController.ProductController(IProductRepository)'"

Tools/Framework used: visualstudio_2015,mvc 4.6,and unity_Container_4

i am very new to this "IoC" , i guess i am missing something

Error code

private IProductRepository _IobjProductRepository;
//error shown in this code part
 Injecting Service to Controller shows error -->
public ProductController(IProductRepository Repository)
 { _IobjProductRepository = Repository;} 
 <--error shown in this code par

t

BootStrapcode

private static IUnityContainer BuildUnityContainer()
    {
      var container = new UnityContainer();
      container.RegisterType<IProductRepository,ProductRepository>();
      container.RegisterType<IController,ProductController>();
            // register all your components with the container here
            // it is NOT necessary to register your controllers

            // e.g. container.RegisterType<ITestService, TestService>();  
            // MvcUnityContainer.Container = container;

            RegisterTypes(container);  
            return container;
    }
    public static void RegisterTypes(IUnityContainer container){}

Solution

  • Make your IProductRepository a public interface.

    public interface IProductRepository 
    {
      // your properties & methods
    }