Make sure that the controller has a parameterless public constructor in Unity

后端 未结 2 1470
梦如初夏
梦如初夏 2021-01-12 06:27

I got this problem with the Controller:
An error occurred when trying to create a controller of type \'*.WebMvc.Controllers.HomeController\'. Make sure that t

2条回答
  •  南笙
    南笙 (楼主)
    2021-01-12 07:14

    Found where is the issue. Maybe some one will face the same. The problem is that Unity could not resolve the IAccountingUow, because of hierarchical dependancy on interfaces.

    AccountingUow class has two contuctors

        public AccountingUow( IRepositoryProvider repositoryProvider)
        {
            Init(repositoryProvider);
        }
        public AccountingUow()
        {
            Init( new RepositoryProvider(new RepositoryFactories()) );
        }
    

    Dependency Resolver is not smart enought to take the default parametless contructor. It tries to take interface dependant contructor and fails to resolve it, cause there are no rules for resolving it.

    I commented out interface dependant constructor and everything worked fine.

    I will post later resolver for the first contructor, maybe someone will use it.

提交回复
热议问题