Types that do not allow Unity [MVC 5]

I am using ASP.NET MVC 5 with Unity 3 and Unity bootstrapper for ASP.NET MVC .

In the UnityConfig.cs file, I registered the following type of the RegisterTypes method:

public static void RegisterTypes(IUnityContainer container)
{
    container.RegisterType<IProjectRepository, ProjectRepository>();
}

In the MVC controller, I solve like this:

UnityContainer container = new UnityContainer();

public ActionResult List()
{
    var projectRepository = container.Resolve<IProjectRepository>();

    return View(projectRepository.GetAll());
}

But I get the following exception:

System.InvalidOperationException : type IProjectRepository does not have an available constructor.

When I register a type inside the controller, it works fine, so somehow the unity forgets what was defined in UnityConfig.RegisterTypes().

I put a breakpoint in UnityConfig.RegisterTypes()and the method is called.

+2
1

, , UnityConfig.RegisterTypes().

, ,

IUnityContainer container;
public MyController(IUnityContainer _container)
{
    container = _container;
}

EDIT: , , . , .

IProjectRepository projectRepository;
public MyController(IProjectRepository _projectRepository)
{
    projectRepository = _projectRepository;
}

, - . , , .

+3

Source: https://habr.com/ru/post/1537045/


All Articles