我正在使用依赖注入(inject),借助存储库和Autofac作为容器的工作单元来编写Web api。依赖性在24小时前得到了完美的注入(inject),但是突然之间,当我今天开始工作时,我不断收到错误 我将包括我的签名以及如何注册类型,如果有人可以指出我的代码可能出了什么问题,我将非常高兴。在我的Web API Controller 上,我有 private IUnitOfWork<Listing> _unitOfWork = null; public SearchController(IUnitOfWork<Listing> unitOfWork) { _unitOfWork = unitOfWork; }工作单元采用通用类型参数创建存储库。在我的WebApiConfig.cs中,我正在注册以下类型 builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>)); builder.RegisterGeneric(typeof(UnitOfWork<>)).As(typeof(IUnitOfWork<>)).InstancePerDependency(); builder.RegisterType(typeof(SearchController)).UsingConstructor(typeof(IUnitOfWork<Listing>));我正在注册SearchController以使用接受IUnitOfWork 的构造函数。在添加模拟单元测试之前,一切正常,但是出于某种目的,我现在继续收到此错误。我还注册了DependencyResolvervar container = builder.Build();var resolver = new AutofacWebApiDependencyResolver(container);config.DependencyResolver = resolver; 最佳答案 由于对此问题有很多反对意见,但没有任何答案,我不完全记得我是如何使其工作的,但我想分享在许多项目中都能正常使用的最新技术。1)这就是我注册通用资源库和工作单元的方式 builder.RegisterType(typeof(YourContextInRepository)); builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>)); builder.RegisterGeneric(typeof(UnitOfWork<>)).As(typeof(IUnitOfWork<>));2)这是我为WebAPI设置依赖关系解析器的方式// Set the dependency resolver for Web API.var webApiResolver = new AutofacWebApiDependencyResolver(container);GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;3)要为MVC Controller 注册它,// Set MVC DI resolver to use our Autofac containerDependencyResolver.SetResolver(new AutofacDependencyResolver(container));这种方法适用于MVC和WebAPI Controller ,我可以简单地做private IUnitOfWork<Listing> _uow;public SearchController(IUnitOfWork<Listing> uow){ _uow = uow;}希望它对将来的人有所帮助。关于c# - WebApi DI Autofac-确保 Controller 具有无参数的公共(public)构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33709710/
10-13 03:13