当前位置: 首页 > 编程语言 > C#

确保控制器在Unity中具有无参数的公共构造函数分享

时间:2023-04-10 12:20:50 C#

C#学习教程:确保控制器在Unity中有一个无参数的公共构造函数.Controllers.HomeController”的控制器。确保控制器有一个无参数的公共构造函数。找到了ApiController的解决方案,但没有关于普通控制器的解决方案。从头开始创建新的MVC4项目。HomeController.cs:publicclassHomeController:Controller{privateIAccountingUow_uow;publicHomeController(IAccountingUowuow){_uow=uow;}UnityDependencyResoler.cs:publicclassUnityDependencyResolver:IDependencyResolver{privateIUnityContainer_container;publicUnityDependencyResolver(IUnityContainercontainer){_container=container;注册类型();}publicobjectGetService(TypeserviceType){try{return_container.Resolve(serviceType);}catch{返回空值;}}publicIEnumerableGetServices(TypeserviceType){try{return_container.ResolveAll(serviceType);}catch{返回空值;}}privatevoidRegisterTypes(){_container.RegisterType();}}protectedvoidApplication_Start()inGlobal.asax{//省略DependencyResolver.SetResolver(newUnityDependencyResolver(newUnityContainer()));}调试发现,竟然没有尝试解析IAccountingUow。我做错了什么?想一整天。找出问题所在。也许有人会面临同样的问题。问题是由于接口的层次依赖,Unity无法解析IAccountingUow。AccountingUow类有两个构造函数publicAccountingUow(IRepositoryProviderrepositoryProvider){Init(repositoryProvider);}publicAccountingUow(){Init(newRepositoryProvider(newRepositoryFactories()));}依赖解析器不应采用默认的无参数构造函数。它试图接受一个依赖于接口的构造函数并且无法解析它,因为没有解析它的规则。我注释掉了依赖于接口的构造函数,一切正常。我将在未来的解析器中发布第一个构造函数,也许有人会使用它。也可能是由于正在解析的外部类型的参数注入的构造函数中出现异常。类型构造函数的依赖项可能会成功解析,但如果外部构造函数中存在异常,Unity会将其报告为“TypeTest.Controllers.MyControllerWithInjectedDependencies没有默认构造函数”。以上是C#学习教程:确保controller在Unity中有一个无参数的公共构造函数。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——本文来自网络合集,不代表立场,如涉及侵权,请点右转联系管理员删除。如需转载请注明出处: